diff --git a/xfa/fgas/crt/cfgas_stringformatter.cpp b/xfa/fgas/crt/cfgas_stringformatter.cpp
index 2e4296a..3347909 100644
--- a/xfa/fgas/crt/cfgas_stringformatter.cpp
+++ b/xfa/fgas/crt/cfgas_stringformatter.cpp
@@ -44,7 +44,6 @@
 
 #undef SUBC
 #define SUBC(a, b, c) a, c
-
 constexpr LocaleDateTimeSubcategoryWithHash kLocaleDateTimeSubcategoryData[] = {
     {SUBC(0x14da2125, "default", LocaleIface::DateTimeSubcategory::kDefault)},
     {SUBC(0x9041d4b0, "short", LocaleIface::DateTimeSubcategory::kShort)},
@@ -59,7 +58,6 @@
     {SUBC(0x54034c2f, "decimal", LocaleIface::NumSubcategory::kDecimal)},
     {SUBC(0x7568e6ae, "integer", LocaleIface::NumSubcategory::kInteger)},
 };
-
 #undef SUBC
 
 struct FX_LOCALETIMEZONEINFO {
@@ -68,14 +66,22 @@
   int16_t iMinute;
 };
 
-const FX_LOCALETIMEZONEINFO g_FXLocaleTimeZoneData[] = {
+constexpr FX_LOCALETIMEZONEINFO kFXLocaleTimeZoneData[] = {
     {L"CDT", -5, 0}, {L"CST", -6, 0}, {L"EDT", -4, 0}, {L"EST", -5, 0},
     {L"MDT", -6, 0}, {L"MST", -7, 0}, {L"PDT", -7, 0}, {L"PST", -8, 0},
 };
 
-const wchar_t kTimeSymbols[] = L"hHkKMSFAzZ";
-const wchar_t kDateSymbols[] = L"DJMEeGgYwW";
-const wchar_t kConstChars[] = L",-:/. ";
+constexpr wchar_t kTimeSymbols[] = L"hHkKMSFAzZ";
+constexpr wchar_t kDateSymbols[] = L"DJMEeGgYwW";
+constexpr wchar_t kConstChars[] = L",-:/. ";
+
+constexpr wchar_t kDateStr[] = L"date";
+constexpr wchar_t kTimeStr[] = L"time";
+constexpr wchar_t kDateTimeStr[] = L"datetime";
+constexpr wchar_t kNumStr[] = L"num";
+constexpr wchar_t kTextStr[] = L"text";
+constexpr wchar_t kZeroStr[] = L"zero";
+constexpr wchar_t kNullStr[] = L"null";
 
 size_t ParseTimeZone(pdfium::span<const wchar_t> spStr, int* tz) {
   *tz = 0;
@@ -448,8 +454,8 @@
         ResolveZone(tz_diff_minutes, pLocale, &hour, &minute);
       } else {
         // Search the timezone list. There are only 8 of them, so linear scan.
-        for (size_t i = 0; i < pdfium::size(g_FXLocaleTimeZoneData); ++i) {
-          const FX_LOCALETIMEZONEINFO& info = g_FXLocaleTimeZoneData[i];
+        for (size_t i = 0; i < pdfium::size(kFXLocaleTimeZoneData); ++i) {
+          const FX_LOCALETIMEZONEINFO& info = kFXLocaleTimeZoneData[i];
           if (tz != info.name)
             continue;
 
@@ -899,22 +905,21 @@
         wsCategory += m_spPattern[ccf];
         ccf++;
       }
-      uint32_t dwHash = FX_HashCode_GetW(wsCategory.AsStringView());
-      if (dwHash == FX_LOCALECATEGORY_DateTimeHash)
+      if (wsCategory == kDateTimeStr)
         return Category::kDateTime;
-      if (dwHash == FX_LOCALECATEGORY_TextHash)
+      if (wsCategory == kTextStr)
         return Category::kText;
-      if (dwHash == FX_LOCALECATEGORY_NumHash)
+      if (wsCategory == kNumStr)
         return Category::kNum;
-      if (dwHash == FX_LOCALECATEGORY_ZeroHash)
+      if (wsCategory == kZeroStr)
         return Category::kZero;
-      if (dwHash == FX_LOCALECATEGORY_NullHash)
+      if (wsCategory == kNullStr)
         return Category::kNull;
-      if (dwHash == FX_LOCALECATEGORY_DateHash) {
+      if (wsCategory == kDateStr) {
         if (eCategory == Category::kTime)
           return Category::kDateTime;
         eCategory = Category::kDate;
-      } else if (dwHash == FX_LOCALECATEGORY_TimeHash) {
+      } else if (wsCategory == kTimeStr) {
         if (eCategory == Category::kDate)
           return Category::kDateTime;
         eCategory = Category::kTime;
diff --git a/xfa/fgas/crt/cfgas_stringformatter.h b/xfa/fgas/crt/cfgas_stringformatter.h
index afdd5ea..3d0f7cd 100644
--- a/xfa/fgas/crt/cfgas_stringformatter.h
+++ b/xfa/fgas/crt/cfgas_stringformatter.h
@@ -13,14 +13,6 @@
 #include "third_party/base/span.h"
 #include "xfa/fgas/crt/locale_iface.h"
 
-#define FX_LOCALECATEGORY_DateHash 0xbde9abde
-#define FX_LOCALECATEGORY_TimeHash 0x2d71b00f
-#define FX_LOCALECATEGORY_DateTimeHash 0x158c72ed
-#define FX_LOCALECATEGORY_NumHash 0x0b4ff870
-#define FX_LOCALECATEGORY_TextHash 0x2d08af85
-#define FX_LOCALECATEGORY_ZeroHash 0x568cb500
-#define FX_LOCALECATEGORY_NullHash 0x052931bb
-
 class CFX_DateTime;
 class LocaleMgrIface;
 
diff --git a/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp b/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
index f82b77f..183d967 100644
--- a/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
+++ b/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
@@ -743,20 +743,3 @@
   EXPECT_EQ(CFGAS_StringFormatter::Category::kDate,
             CFGAS_StringFormatter(L"date.long{}").GetCategory());
 }
-
-TEST_F(CFGAS_StringFormatterTest, HashConstants) {
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_DateHash),
-            FX_HashCode_GetW(L"date"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_TimeHash),
-            FX_HashCode_GetW(L"time"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_DateTimeHash),
-            FX_HashCode_GetW(L"datetime"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_NumHash),
-            FX_HashCode_GetW(L"num"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_TextHash),
-            FX_HashCode_GetW(L"text"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_ZeroHash),
-            FX_HashCode_GetW(L"zero"));
-  EXPECT_EQ(static_cast<uint32_t>(FX_LOCALECATEGORY_NullHash),
-            FX_HashCode_GetW(L"null"));
-}
