diff --git a/changelogs/unreleased/gh-6751-olson-timezones.md b/changelogs/unreleased/gh-6751-olson-timezones.md
index f9c577d4e9755d78598751daff416188e4fe052e..107507e3081ede7dd596af9633a91e0613c6c47c 100644
--- a/changelogs/unreleased/gh-6751-olson-timezones.md
+++ b/changelogs/unreleased/gh-6751-olson-timezones.md
@@ -2,3 +2,6 @@
 
  * `isdst` field in datetime object is now properly calculated according to
    IANA tzdata (aka Olson DB) rules for given date/time moment (gh-6751);
+ * `datetime` module exports bidirectional `TZ` array, which may be used
+   for translation of timezone index (`tzindex`) to timezone names, and in
+   reverse (gh-6751);
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c53190a0c6176f07c3b113bbaded5ee5b1386b8b..6fca3a8882d415e78a5c3c06a5a7d5626ac79481 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -63,6 +63,7 @@ lua_source(lua_sources lua/httpc.lua httpc_lua)
 lua_source(lua_sources lua/iconv.lua iconv_lua)
 lua_source(lua_sources lua/swim.lua swim_lua)
 lua_source(lua_sources lua/datetime.lua datetime_lua)
+lua_source(lua_sources lua/timezones.lua timezones_lua)
 
 # LuaJIT jit.* library
 lua_source(lua_sources ${LUAJIT_SOURCE_ROOT}/src/jit/bc.lua jit_bc_lua)
diff --git a/src/lib/tzcode/CMakeLists.txt b/src/lib/tzcode/CMakeLists.txt
index 51791554153df28a7aed4576f5f65bf5d3760061..9ec59c9e35fd2537c294fee98ce5b129e6e4e40c 100644
--- a/src/lib/tzcode/CMakeLists.txt
+++ b/src/lib/tzcode/CMakeLists.txt
@@ -8,6 +8,7 @@ set(TZCODE_PREFIX_DIR tz)
 set(TZCODE_PREFIX ${TZCODE_BUILD_DIR}/${TZCODE_PREFIX_DIR})
 set(TZDATA_TARGET main.zi)
 set(TZCODE_SRC ${PROJECT_SOURCE_DIR}/src/lib/tzcode)
+set(TZLUA_SRC ${PROJECT_SOURCE_DIR}/src/lua)
 
 set(TZDATA_FULL_TARGET
     ${TZCODE_PREFIX}/src/${TZCODE_PROJECT}/${TZDATA_TARGET})
@@ -40,9 +41,10 @@ find_program(PERL perl)
 add_custom_target(gen-timezones DEPENDS ${TZCODE_PROJECT})
 add_custom_command(TARGET gen-timezones
     COMMAND
-    ${PERL} ${TZCODE_SRC}/gen-zone-abbrevs.pl ${TZCODE_SRC}/zone-abbrevs.txt
-    ${TZDATA_FULL_TARGET} > ${TZCODE_SRC}/timezones.h
-    COMMENT "Generating timezones.h"
+    ${PERL} ${TZCODE_SRC}/gen-zone-abbrevs.pl
+        ${TZCODE_SRC}/zone-abbrevs.txt ${TZDATA_FULL_TARGET}
+        ${TZCODE_SRC}/timezones.h ${TZLUA_SRC}/timezones.lua
+    COMMENT "Generating timezones.h and timezones.lua"
 )
 
 # We excluded build of gen-timezones and tzcode-iana (main.zi) targets
@@ -51,4 +53,5 @@ add_custom_command(TARGET gen-timezones
 # ```sh
 #   make gen-timezones VERBOSE=1
 # ```
-# it will regenerate `timezones.h` in-place, in their repository location.
+# it will regenerate `timezones.h`, `timezones.lua` in-place, in their
+# repository location.
diff --git a/src/lib/tzcode/gen-zone-abbrevs.pl b/src/lib/tzcode/gen-zone-abbrevs.pl
index 61ae07b428d047e96bd6ad1723724f9c1e51ed4d..5693121bc56a3048c7176682b23665032856d7ca 100755
--- a/src/lib/tzcode/gen-zone-abbrevs.pl
+++ b/src/lib/tzcode/gen-zone-abbrevs.pl
@@ -5,19 +5,21 @@ gen-zone-abbrevs.pl - generate list of timezones
 
 =head1 SYNOPSIS
 
-  gen-zone-abbrevs.pl [zone-abbrevs.txt [main.zi]] > timezones.h
+  gen-zone-abbrevs.pl [zone-abbrevs.txt [main.zi [timezones.h [timezones.lua]]]]
 
 Options:
 
   first argument is zone-abbrevs.txt or it's equivalent
   second argument is main.zi of it's equivalent
+  third is a name of output header file (timezones.h by default)
+  fourth is a name of output lua config (timezones.lua by default)
 
 =head1 DESCRIPTION
 
 Reads input description of known IANA timezone abbreviations (including single-
 letter military zone names, e.g. Zulu 'Z'), and list of zones from Olson/tzcode
-main.zi file, and then generates set of macro calls defining timezone with all
-attributes.
+main.zi file, and then generates set of C/C++ macro calls defining timezone
+with all attributes.
 
   ZONE_ABBREV(  25,    0, "Z", TZ_MILITARY)
   ZONE_ABBREV( 112,    0, "UT", TZ_UTC|TZ_RFC)
@@ -35,6 +37,13 @@ different artifact which could be used from other language (i.e. Go, or Python).
 We guarantee that constants assigned to particular zone will be maintained in
 future. To simplify future updates we leave some holes in list.
 
+Another artifact - is Lua config file, which defines table for converting of
+timezone index to the timezone name. e.g.
+    [25] = "Z",
+    [1000] = "Etc/GMT",
+
+This config file is loaded by datetime.lua module into public `TZ` table.
+
 NB! In a future, for the next versions of Olson/tzdata database, we plan to
 automate updates of generated list. At the moment we leave it as manual process.
 
@@ -43,6 +52,11 @@ automate updates of generated list. At the moment we leave it as manual process.
 use strict;
 use warnings;
 
+my $zone_abbrevs_file = shift || 'zone-abbrevs.txt';
+my $tzdata_zi_file    = shift || 'main.zi';
+my $output_h_file     = shift || 'timezones.h';
+my $output_lua_file   = shift || 'timezones.lua';
+
 my $next_id    = 0;
 my $last_first = undef;
 
@@ -118,9 +132,6 @@ BEGIN {
     %FlagName = reverse %flags;
 }
 
-my $zone_abbrevs_file = shift || 'zone-abbrevs.txt';
-my $tzdata_zi_file    = shift || 'main.zi';
-
 # ACT    -05:00          # Acre Time (South America)
 # ACT    +10:30 / +09:30 # Australian Central Time (Australia)
 # ACWST  +08:45          # Australian Central Western Standard Time (Australia)
@@ -189,8 +200,9 @@ sub read_abbrevs_file($) {
 }
 
 my %ZoneNames;
-my %ZoneIds;
-my %Aliases;
+my %ZoneIds;    # number to name
+my %ZoneRevIds; # name to number
+my %Aliases;    # name to name
 
 sub read_zi_file($) {
     my $filename = shift;
@@ -215,6 +227,16 @@ sub read_zi_file($) {
 
 }
 
+my $out_h;
+my $out_lua;
+
+sub open_out_files() {
+    open($out_h, ">$output_h_file") or
+        die qq<Could not open '$output_h_file' for writing: '$!'>;
+    open($out_lua, ">$output_lua_file") or
+        die qq<Could not open '$output_lua_file' for writing: '$!'>;
+}
+
 # first we generate abbreviations list
 sub gen_abbrevs() {
     foreach my $encoded ( sort { $a <=> $b } keys %ZoneAbbrevs ) {
@@ -233,7 +255,7 @@ sub gen_abbrevs() {
             $flags = join '|', @names;
         }
 
-        printf "ZONE_ABBREV(%4d, %4d, \"%s\", %s)\n",
+        printf $out_h "ZONE_ABBREV(%4d, %4d, \"%s\", %s)\n",
           $nextid, $offset, $name, $flags;
     }
 }
@@ -242,8 +264,9 @@ sub gen_abbrevs() {
 sub gen_primary_zones() {
     foreach my $zonename (sort keys %ZoneNames) {
         my $nextid = next_id($zonename);
-        $ZoneIds{$zonename} = $nextid;
-        printf "ZONE_UNIQUE(%4d, \"%s\")\n", $nextid, $zonename;
+        $ZoneRevIds{$zonename} = $nextid;
+        $ZoneIds{$nextid} = $zonename;
+        printf $out_h "ZONE_UNIQUE(%4d, \"%s\")\n", $nextid, $zonename;
     }
 }
 
@@ -251,19 +274,31 @@ sub gen_primary_zones() {
 sub gen_aliases() {
     foreach my $alias ( sort keys %Aliases ) {
         my $zonename = $Aliases{$alias};
-        printf "ZONE_ALIAS(%4d, \"%s\", \"%s\")\n", $ZoneIds{$zonename},
+        printf $out_h "ZONE_ALIAS(%4d, \"%s\", \"%s\")\n", $ZoneRevIds{$zonename},
             $alias, $zonename;
     }
 }
 
-sub gen_header() {
-    printf "/* Automatically generated by gen-zone-abbrevs.pl */\n";
+sub gen_c_header() {
+    printf $out_h "/* Automatically generated by gen-zone-abbrevs.pl */\n";
 
     gen_abbrevs();
     gen_primary_zones();
     gen_aliases();
 }
 
+sub gen_lua_config() {
+    print $out_lua "-- Automatically generated by gen-zone-abbrevs.pl\n";
+    print $out_lua "return {\n";
+    foreach my $nextid (sort { $a <=> $b } keys %ZoneIds) {
+        printf $out_lua "    [%4d] = \"%s\",\n", $nextid, $ZoneIds{$nextid};
+        printf $out_lua "    [\"%s\"] = %d,\n", $ZoneIds{$nextid}, $nextid;
+    }
+    print $out_lua "}\n";
+}
+
 read_abbrevs_file($zone_abbrevs_file);
 read_zi_file($tzdata_zi_file);
-gen_header();
+open_out_files();
+gen_c_header();
+gen_lua_config()
diff --git a/src/lua/datetime.lua b/src/lua/datetime.lua
index 7a44fb02d2da2a7bd10d427d7dc6360c5ad4bc6e..dddcd8aecd1a3db50a635cb831012eb16f0169ed 100644
--- a/src/lua/datetime.lua
+++ b/src/lua/datetime.lua
@@ -1,5 +1,6 @@
 local ffi = require('ffi')
 local buffer = require('buffer')
+local tz = require('timezones')
 
 --[[
     `c-dt` library functions handles properly both positive and negative `dt`
@@ -1253,5 +1254,6 @@ return setmetatable(
         parse       = datetime_parse_from,
         parse_date  = datetime_parse_date,
         is_datetime = is_datetime,
+        TZ          = tz,
     }, {}
 )
diff --git a/src/lua/init.c b/src/lua/init.c
index 8160e024104dcdc0dd2ce7a0217db8ed4fdfc93d..d3a265eb8cd2b425bb6ed1a0cbcf6f8d382d67f6 100644
--- a/src/lua/init.c
+++ b/src/lua/init.c
@@ -153,7 +153,8 @@ extern char strict_lua[],
 	sysprof_parse_lua[],
 	sysprof_collapse_lua[],
 	sysprof_lua[],
-	datetime_lua[]
+	datetime_lua[],
+	timezones_lua[]
 #if defined(EMBED_LUAROCKS)
 	, luarocks_core_hardcoded_lua[],
 	luarocks_admin_cache_lua[],
@@ -305,6 +306,7 @@ static const char *lua_modules[] = {
 	"sysprof.parse", sysprof_parse_lua,
 	"sysprof.collapse", sysprof_collapse_lua,
 	"sysprof", sysprof_lua,
+	"timezones", timezones_lua,
 	"datetime", datetime_lua,
 	NULL
 };
diff --git a/src/lua/timezones.lua b/src/lua/timezones.lua
new file mode 100644
index 0000000000000000000000000000000000000000..4c9dc4d898c6d4f5e50a464c98aebb373c21c173
--- /dev/null
+++ b/src/lua/timezones.lua
@@ -0,0 +1,1263 @@
+-- Automatically generated by gen-zone-abbrevs.pl
+return {
+    [   1] = "A",
+    ["A"] = 1,
+    [   2] = "B",
+    ["B"] = 2,
+    [   3] = "C",
+    ["C"] = 3,
+    [   4] = "D",
+    ["D"] = 4,
+    [   5] = "E",
+    ["E"] = 5,
+    [   6] = "F",
+    ["F"] = 6,
+    [   7] = "G",
+    ["G"] = 7,
+    [   8] = "H",
+    ["H"] = 8,
+    [   9] = "I",
+    ["I"] = 9,
+    [  10] = "K",
+    ["K"] = 10,
+    [  11] = "L",
+    ["L"] = 11,
+    [  12] = "M",
+    ["M"] = 12,
+    [  13] = "N",
+    ["N"] = 13,
+    [  14] = "O",
+    ["O"] = 14,
+    [  15] = "P",
+    ["P"] = 15,
+    [  16] = "Q",
+    ["Q"] = 16,
+    [  17] = "R",
+    ["R"] = 17,
+    [  18] = "S",
+    ["S"] = 18,
+    [  19] = "T",
+    ["T"] = 19,
+    [  20] = "U",
+    ["U"] = 20,
+    [  21] = "V",
+    ["V"] = 21,
+    [  22] = "W",
+    ["W"] = 22,
+    [  23] = "X",
+    ["X"] = 23,
+    [  24] = "Y",
+    ["Y"] = 24,
+    [  25] = "Z",
+    ["Z"] = 25,
+    [  32] = "AT",
+    ["AT"] = 32,
+    [  40] = "BT",
+    ["BT"] = 40,
+    [  48] = "CT",
+    ["CT"] = 48,
+    [  56] = "ET",
+    ["ET"] = 56,
+    [  64] = "GT",
+    ["GT"] = 64,
+    [  72] = "IT",
+    ["IT"] = 72,
+    [  80] = "KT",
+    ["KT"] = 80,
+    [  88] = "MT",
+    ["MT"] = 88,
+    [  96] = "PT",
+    ["PT"] = 96,
+    [ 104] = "ST",
+    ["ST"] = 104,
+    [ 112] = "UT",
+    ["UT"] = 112,
+    [ 120] = "WT",
+    ["WT"] = 120,
+    [ 128] = "ACT",
+    ["ACT"] = 128,
+    [ 129] = "ADT",
+    ["ADT"] = 129,
+    [ 130] = "AET",
+    ["AET"] = 130,
+    [ 131] = "AFT",
+    ["AFT"] = 131,
+    [ 132] = "AMT",
+    ["AMT"] = 132,
+    [ 133] = "AoE",
+    ["AoE"] = 133,
+    [ 134] = "ART",
+    ["ART"] = 134,
+    [ 135] = "AST",
+    ["AST"] = 135,
+    [ 136] = "AZT",
+    ["AZT"] = 136,
+    [ 144] = "BDT",
+    ["BDT"] = 144,
+    [ 145] = "BNT",
+    ["BNT"] = 145,
+    [ 146] = "BOT",
+    ["BOT"] = 146,
+    [ 147] = "BRT",
+    ["BRT"] = 147,
+    [ 148] = "BST",
+    ["BST"] = 148,
+    [ 149] = "BTT",
+    ["BTT"] = 149,
+    [ 152] = "CAT",
+    ["CAT"] = 152,
+    [ 153] = "CCT",
+    ["CCT"] = 153,
+    [ 154] = "CDT",
+    ["CDT"] = 154,
+    [ 155] = "CET",
+    ["CET"] = 155,
+    [ 156] = "CIT",
+    ["CIT"] = 156,
+    [ 157] = "CKT",
+    ["CKT"] = 157,
+    [ 158] = "CLT",
+    ["CLT"] = 158,
+    [ 159] = "COT",
+    ["COT"] = 159,
+    [ 160] = "CST",
+    ["CST"] = 160,
+    [ 161] = "CVT",
+    ["CVT"] = 161,
+    [ 162] = "CXT",
+    ["CXT"] = 162,
+    [ 168] = "EAT",
+    ["EAT"] = 168,
+    [ 169] = "ECT",
+    ["ECT"] = 169,
+    [ 170] = "EDT",
+    ["EDT"] = 170,
+    [ 171] = "EET",
+    ["EET"] = 171,
+    [ 172] = "EGT",
+    ["EGT"] = 172,
+    [ 173] = "EST",
+    ["EST"] = 173,
+    [ 176] = "FET",
+    ["FET"] = 176,
+    [ 177] = "FJT",
+    ["FJT"] = 177,
+    [ 178] = "FKT",
+    ["FKT"] = 178,
+    [ 179] = "FNT",
+    ["FNT"] = 179,
+    [ 184] = "GET",
+    ["GET"] = 184,
+    [ 185] = "GFT",
+    ["GFT"] = 185,
+    [ 186] = "GMT",
+    ["GMT"] = 186,
+    [ 187] = "GST",
+    ["GST"] = 187,
+    [ 188] = "GYT",
+    ["GYT"] = 188,
+    [ 192] = "HAA",
+    ["HAA"] = 192,
+    [ 193] = "HAC",
+    ["HAC"] = 193,
+    [ 194] = "HAE",
+    ["HAE"] = 194,
+    [ 195] = "HAP",
+    ["HAP"] = 195,
+    [ 196] = "HAR",
+    ["HAR"] = 196,
+    [ 197] = "HAT",
+    ["HAT"] = 197,
+    [ 198] = "HDT",
+    ["HDT"] = 198,
+    [ 199] = "HKT",
+    ["HKT"] = 199,
+    [ 200] = "HLV",
+    ["HLV"] = 200,
+    [ 201] = "HNA",
+    ["HNA"] = 201,
+    [ 202] = "HNC",
+    ["HNC"] = 202,
+    [ 203] = "HNE",
+    ["HNE"] = 203,
+    [ 204] = "HNP",
+    ["HNP"] = 204,
+    [ 205] = "HNR",
+    ["HNR"] = 205,
+    [ 206] = "HNT",
+    ["HNT"] = 206,
+    [ 207] = "HST",
+    ["HST"] = 207,
+    [ 208] = "ICT",
+    ["ICT"] = 208,
+    [ 209] = "IDT",
+    ["IDT"] = 209,
+    [ 210] = "IOT",
+    ["IOT"] = 210,
+    [ 211] = "IST",
+    ["IST"] = 211,
+    [ 216] = "JST",
+    ["JST"] = 216,
+    [ 224] = "KGT",
+    ["KGT"] = 224,
+    [ 225] = "KIT",
+    ["KIT"] = 225,
+    [ 226] = "KST",
+    ["KST"] = 226,
+    [ 232] = "MCK",
+    ["MCK"] = 232,
+    [ 233] = "MDT",
+    ["MDT"] = 233,
+    [ 234] = "MEZ",
+    ["MEZ"] = 234,
+    [ 235] = "MHT",
+    ["MHT"] = 235,
+    [ 236] = "MMT",
+    ["MMT"] = 236,
+    [ 237] = "MSD",
+    ["MSD"] = 237,
+    [ 238] = "MSK",
+    ["MSK"] = 238,
+    [ 239] = "MST",
+    ["MST"] = 239,
+    [ 240] = "MUT",
+    ["MUT"] = 240,
+    [ 241] = "MVT",
+    ["MVT"] = 241,
+    [ 242] = "MYT",
+    ["MYT"] = 242,
+    [ 248] = "NCT",
+    ["NCT"] = 248,
+    [ 249] = "NDT",
+    ["NDT"] = 249,
+    [ 250] = "NFT",
+    ["NFT"] = 250,
+    [ 251] = "NPT",
+    ["NPT"] = 251,
+    [ 252] = "NRT",
+    ["NRT"] = 252,
+    [ 253] = "NST",
+    ["NST"] = 253,
+    [ 254] = "NUT",
+    ["NUT"] = 254,
+    [ 256] = "OEZ",
+    ["OEZ"] = 256,
+    [ 264] = "PDT",
+    ["PDT"] = 264,
+    [ 265] = "PET",
+    ["PET"] = 265,
+    [ 266] = "PGT",
+    ["PGT"] = 266,
+    [ 267] = "PHT",
+    ["PHT"] = 267,
+    [ 268] = "PKT",
+    ["PKT"] = 268,
+    [ 269] = "PST",
+    ["PST"] = 269,
+    [ 270] = "PWT",
+    ["PWT"] = 270,
+    [ 271] = "PYT",
+    ["PYT"] = 271,
+    [ 272] = "RET",
+    ["RET"] = 272,
+    [ 280] = "SBT",
+    ["SBT"] = 280,
+    [ 281] = "SCT",
+    ["SCT"] = 281,
+    [ 282] = "SGT",
+    ["SGT"] = 282,
+    [ 283] = "SRT",
+    ["SRT"] = 283,
+    [ 284] = "SST",
+    ["SST"] = 284,
+    [ 288] = "TFT",
+    ["TFT"] = 288,
+    [ 289] = "TJT",
+    ["TJT"] = 289,
+    [ 290] = "TKT",
+    ["TKT"] = 290,
+    [ 291] = "TLT",
+    ["TLT"] = 291,
+    [ 292] = "TMT",
+    ["TMT"] = 292,
+    [ 293] = "TOT",
+    ["TOT"] = 293,
+    [ 294] = "TRT",
+    ["TRT"] = 294,
+    [ 295] = "TVT",
+    ["TVT"] = 295,
+    [ 296] = "UTC",
+    ["UTC"] = 296,
+    [ 297] = "UYT",
+    ["UYT"] = 297,
+    [ 298] = "UZT",
+    ["UZT"] = 298,
+    [ 304] = "VET",
+    ["VET"] = 304,
+    [ 305] = "VUT",
+    ["VUT"] = 305,
+    [ 312] = "WAT",
+    ["WAT"] = 312,
+    [ 313] = "WDT",
+    ["WDT"] = 313,
+    [ 314] = "WET",
+    ["WET"] = 314,
+    [ 315] = "WEZ",
+    ["WEZ"] = 315,
+    [ 316] = "WFT",
+    ["WFT"] = 316,
+    [ 317] = "WGT",
+    ["WGT"] = 317,
+    [ 318] = "WIB",
+    ["WIB"] = 318,
+    [ 319] = "WIT",
+    ["WIT"] = 319,
+    [ 320] = "WST",
+    ["WST"] = 320,
+    [ 328] = "ACDT",
+    ["ACDT"] = 328,
+    [ 329] = "ACST",
+    ["ACST"] = 329,
+    [ 330] = "ADST",
+    ["ADST"] = 330,
+    [ 331] = "AEDT",
+    ["AEDT"] = 331,
+    [ 332] = "AEST",
+    ["AEST"] = 332,
+    [ 333] = "AKDT",
+    ["AKDT"] = 333,
+    [ 334] = "AKST",
+    ["AKST"] = 334,
+    [ 335] = "ALMT",
+    ["ALMT"] = 335,
+    [ 336] = "AMDT",
+    ["AMDT"] = 336,
+    [ 337] = "AMST",
+    ["AMST"] = 337,
+    [ 338] = "ANAT",
+    ["ANAT"] = 338,
+    [ 339] = "AQTT",
+    ["AQTT"] = 339,
+    [ 340] = "AWDT",
+    ["AWDT"] = 340,
+    [ 341] = "AWST",
+    ["AWST"] = 341,
+    [ 342] = "AZOT",
+    ["AZOT"] = 342,
+    [ 343] = "AZST",
+    ["AZST"] = 343,
+    [ 344] = "BDST",
+    ["BDST"] = 344,
+    [ 345] = "BRST",
+    ["BRST"] = 345,
+    [ 352] = "CAST",
+    ["CAST"] = 352,
+    [ 353] = "CDST",
+    ["CDST"] = 353,
+    [ 354] = "CEDT",
+    ["CEDT"] = 354,
+    [ 355] = "CEST",
+    ["CEST"] = 355,
+    [ 356] = "CHOT",
+    ["CHOT"] = 356,
+    [ 357] = "ChST",
+    ["ChST"] = 357,
+    [ 358] = "CHUT",
+    ["CHUT"] = 358,
+    [ 359] = "CIST",
+    ["CIST"] = 359,
+    [ 360] = "CLDT",
+    ["CLDT"] = 360,
+    [ 361] = "CLST",
+    ["CLST"] = 361,
+    [ 368] = "DAVT",
+    ["DAVT"] = 368,
+    [ 369] = "DDUT",
+    ["DDUT"] = 369,
+    [ 376] = "EADT",
+    ["EADT"] = 376,
+    [ 377] = "EAST",
+    ["EAST"] = 377,
+    [ 378] = "ECST",
+    ["ECST"] = 378,
+    [ 379] = "EDST",
+    ["EDST"] = 379,
+    [ 380] = "EEDT",
+    ["EEDT"] = 380,
+    [ 381] = "EEST",
+    ["EEST"] = 381,
+    [ 382] = "EGST",
+    ["EGST"] = 382,
+    [ 384] = "FJDT",
+    ["FJDT"] = 384,
+    [ 385] = "FJST",
+    ["FJST"] = 385,
+    [ 386] = "FKDT",
+    ["FKDT"] = 386,
+    [ 387] = "FKST",
+    ["FKST"] = 387,
+    [ 392] = "GALT",
+    ["GALT"] = 392,
+    [ 393] = "GAMT",
+    ["GAMT"] = 393,
+    [ 394] = "GILT",
+    ["GILT"] = 394,
+    [ 400] = "HADT",
+    ["HADT"] = 400,
+    [ 401] = "HAST",
+    ["HAST"] = 401,
+    [ 402] = "HOVT",
+    ["HOVT"] = 402,
+    [ 408] = "IRDT",
+    ["IRDT"] = 408,
+    [ 409] = "IRKT",
+    ["IRKT"] = 409,
+    [ 410] = "IRST",
+    ["IRST"] = 410,
+    [ 416] = "KOST",
+    ["KOST"] = 416,
+    [ 417] = "KRAT",
+    ["KRAT"] = 417,
+    [ 418] = "KUYT",
+    ["KUYT"] = 418,
+    [ 424] = "LHDT",
+    ["LHDT"] = 424,
+    [ 425] = "LHST",
+    ["LHST"] = 425,
+    [ 426] = "LINT",
+    ["LINT"] = 426,
+    [ 432] = "MAGT",
+    ["MAGT"] = 432,
+    [ 433] = "MART",
+    ["MART"] = 433,
+    [ 434] = "MAWT",
+    ["MAWT"] = 434,
+    [ 435] = "MDST",
+    ["MDST"] = 435,
+    [ 436] = "MESZ",
+    ["MESZ"] = 436,
+    [ 440] = "NFDT",
+    ["NFDT"] = 440,
+    [ 441] = "NOVT",
+    ["NOVT"] = 441,
+    [ 442] = "NZDT",
+    ["NZDT"] = 442,
+    [ 443] = "NZST",
+    ["NZST"] = 443,
+    [ 448] = "OESZ",
+    ["OESZ"] = 448,
+    [ 449] = "OMST",
+    ["OMST"] = 449,
+    [ 450] = "ORAT",
+    ["ORAT"] = 450,
+    [ 456] = "PDST",
+    ["PDST"] = 456,
+    [ 457] = "PETT",
+    ["PETT"] = 457,
+    [ 458] = "PHOT",
+    ["PHOT"] = 458,
+    [ 459] = "PMDT",
+    ["PMDT"] = 459,
+    [ 460] = "PMST",
+    ["PMST"] = 460,
+    [ 461] = "PONT",
+    ["PONT"] = 461,
+    [ 462] = "PYST",
+    ["PYST"] = 462,
+    [ 464] = "QYZT",
+    ["QYZT"] = 464,
+    [ 472] = "ROTT",
+    ["ROTT"] = 472,
+    [ 480] = "SAKT",
+    ["SAKT"] = 480,
+    [ 481] = "SAMT",
+    ["SAMT"] = 481,
+    [ 482] = "SAST",
+    ["SAST"] = 482,
+    [ 483] = "SRET",
+    ["SRET"] = 483,
+    [ 484] = "SYOT",
+    ["SYOT"] = 484,
+    [ 488] = "TAHT",
+    ["TAHT"] = 488,
+    [ 489] = "TOST",
+    ["TOST"] = 489,
+    [ 496] = "ULAT",
+    ["ULAT"] = 496,
+    [ 497] = "UYST",
+    ["UYST"] = 497,
+    [ 504] = "VLAT",
+    ["VLAT"] = 504,
+    [ 505] = "VOST",
+    ["VOST"] = 505,
+    [ 512] = "WAKT",
+    ["WAKT"] = 512,
+    [ 513] = "WAST",
+    ["WAST"] = 513,
+    [ 514] = "WEDT",
+    ["WEDT"] = 514,
+    [ 515] = "WEST",
+    ["WEST"] = 515,
+    [ 516] = "WESZ",
+    ["WESZ"] = 516,
+    [ 517] = "WGST",
+    ["WGST"] = 517,
+    [ 518] = "WITA",
+    ["WITA"] = 518,
+    [ 520] = "YAKT",
+    ["YAKT"] = 520,
+    [ 521] = "YAPT",
+    ["YAPT"] = 521,
+    [ 522] = "YEKT",
+    ["YEKT"] = 522,
+    [ 528] = "ACWST",
+    ["ACWST"] = 528,
+    [ 529] = "ANAST",
+    ["ANAST"] = 529,
+    [ 530] = "AZODT",
+    ["AZODT"] = 530,
+    [ 531] = "AZOST",
+    ["AZOST"] = 531,
+    [ 536] = "CHADT",
+    ["CHADT"] = 536,
+    [ 537] = "CHAST",
+    ["CHAST"] = 537,
+    [ 538] = "CHODT",
+    ["CHODT"] = 538,
+    [ 539] = "CHOST",
+    ["CHOST"] = 539,
+    [ 540] = "CIDST",
+    ["CIDST"] = 540,
+    [ 544] = "EASST",
+    ["EASST"] = 544,
+    [ 545] = "EFATE",
+    ["EFATE"] = 545,
+    [ 552] = "HOVDT",
+    ["HOVDT"] = 552,
+    [ 553] = "HOVST",
+    ["HOVST"] = 553,
+    [ 560] = "IRKST",
+    ["IRKST"] = 560,
+    [ 568] = "KRAST",
+    ["KRAST"] = 568,
+    [ 576] = "MAGST",
+    ["MAGST"] = 576,
+    [ 584] = "NACDT",
+    ["NACDT"] = 584,
+    [ 585] = "NACST",
+    ["NACST"] = 585,
+    [ 586] = "NAEDT",
+    ["NAEDT"] = 586,
+    [ 587] = "NAEST",
+    ["NAEST"] = 587,
+    [ 588] = "NAMDT",
+    ["NAMDT"] = 588,
+    [ 589] = "NAMST",
+    ["NAMST"] = 589,
+    [ 590] = "NAPDT",
+    ["NAPDT"] = 590,
+    [ 591] = "NAPST",
+    ["NAPST"] = 591,
+    [ 592] = "NOVST",
+    ["NOVST"] = 592,
+    [ 600] = "OMSST",
+    ["OMSST"] = 600,
+    [ 608] = "PETST",
+    ["PETST"] = 608,
+    [ 616] = "SAMST",
+    ["SAMST"] = 616,
+    [ 624] = "ULAST",
+    ["ULAST"] = 624,
+    [ 632] = "VLAST",
+    ["VLAST"] = 632,
+    [ 640] = "WARST",
+    ["WARST"] = 640,
+    [ 648] = "YAKST",
+    ["YAKST"] = 648,
+    [ 649] = "YEKST",
+    ["YEKST"] = 649,
+    [ 656] = "CHODST",
+    ["CHODST"] = 656,
+    [ 664] = "HOVDST",
+    ["HOVDST"] = 664,
+    [ 672] = "Africa/Abidjan",
+    ["Africa/Abidjan"] = 672,
+    [ 673] = "Africa/Algiers",
+    ["Africa/Algiers"] = 673,
+    [ 674] = "Africa/Bissau",
+    ["Africa/Bissau"] = 674,
+    [ 675] = "Africa/Cairo",
+    ["Africa/Cairo"] = 675,
+    [ 676] = "Africa/Casablanca",
+    ["Africa/Casablanca"] = 676,
+    [ 677] = "Africa/Ceuta",
+    ["Africa/Ceuta"] = 677,
+    [ 678] = "Africa/El_Aaiun",
+    ["Africa/El_Aaiun"] = 678,
+    [ 679] = "Africa/Johannesburg",
+    ["Africa/Johannesburg"] = 679,
+    [ 680] = "Africa/Juba",
+    ["Africa/Juba"] = 680,
+    [ 681] = "Africa/Khartoum",
+    ["Africa/Khartoum"] = 681,
+    [ 682] = "Africa/Lagos",
+    ["Africa/Lagos"] = 682,
+    [ 683] = "Africa/Maputo",
+    ["Africa/Maputo"] = 683,
+    [ 684] = "Africa/Monrovia",
+    ["Africa/Monrovia"] = 684,
+    [ 685] = "Africa/Nairobi",
+    ["Africa/Nairobi"] = 685,
+    [ 686] = "Africa/Ndjamena",
+    ["Africa/Ndjamena"] = 686,
+    [ 687] = "Africa/Sao_Tome",
+    ["Africa/Sao_Tome"] = 687,
+    [ 688] = "Africa/Tripoli",
+    ["Africa/Tripoli"] = 688,
+    [ 689] = "Africa/Tunis",
+    ["Africa/Tunis"] = 689,
+    [ 690] = "Africa/Windhoek",
+    ["Africa/Windhoek"] = 690,
+    [ 691] = "America/Adak",
+    ["America/Adak"] = 691,
+    [ 692] = "America/Anchorage",
+    ["America/Anchorage"] = 692,
+    [ 693] = "America/Araguaina",
+    ["America/Araguaina"] = 693,
+    [ 694] = "America/Argentina/Buenos_Aires",
+    ["America/Argentina/Buenos_Aires"] = 694,
+    [ 695] = "America/Argentina/Catamarca",
+    ["America/Argentina/Catamarca"] = 695,
+    [ 696] = "America/Argentina/Cordoba",
+    ["America/Argentina/Cordoba"] = 696,
+    [ 697] = "America/Argentina/Jujuy",
+    ["America/Argentina/Jujuy"] = 697,
+    [ 698] = "America/Argentina/La_Rioja",
+    ["America/Argentina/La_Rioja"] = 698,
+    [ 699] = "America/Argentina/Mendoza",
+    ["America/Argentina/Mendoza"] = 699,
+    [ 700] = "America/Argentina/Rio_Gallegos",
+    ["America/Argentina/Rio_Gallegos"] = 700,
+    [ 701] = "America/Argentina/Salta",
+    ["America/Argentina/Salta"] = 701,
+    [ 702] = "America/Argentina/San_Juan",
+    ["America/Argentina/San_Juan"] = 702,
+    [ 703] = "America/Argentina/San_Luis",
+    ["America/Argentina/San_Luis"] = 703,
+    [ 704] = "America/Argentina/Tucuman",
+    ["America/Argentina/Tucuman"] = 704,
+    [ 705] = "America/Argentina/Ushuaia",
+    ["America/Argentina/Ushuaia"] = 705,
+    [ 706] = "America/Asuncion",
+    ["America/Asuncion"] = 706,
+    [ 707] = "America/Bahia",
+    ["America/Bahia"] = 707,
+    [ 708] = "America/Bahia_Banderas",
+    ["America/Bahia_Banderas"] = 708,
+    [ 709] = "America/Barbados",
+    ["America/Barbados"] = 709,
+    [ 710] = "America/Belem",
+    ["America/Belem"] = 710,
+    [ 711] = "America/Belize",
+    ["America/Belize"] = 711,
+    [ 712] = "America/Boa_Vista",
+    ["America/Boa_Vista"] = 712,
+    [ 713] = "America/Bogota",
+    ["America/Bogota"] = 713,
+    [ 714] = "America/Boise",
+    ["America/Boise"] = 714,
+    [ 715] = "America/Cambridge_Bay",
+    ["America/Cambridge_Bay"] = 715,
+    [ 716] = "America/Campo_Grande",
+    ["America/Campo_Grande"] = 716,
+    [ 717] = "America/Cancun",
+    ["America/Cancun"] = 717,
+    [ 718] = "America/Caracas",
+    ["America/Caracas"] = 718,
+    [ 719] = "America/Cayenne",
+    ["America/Cayenne"] = 719,
+    [ 720] = "America/Chicago",
+    ["America/Chicago"] = 720,
+    [ 721] = "America/Chihuahua",
+    ["America/Chihuahua"] = 721,
+    [ 722] = "America/Costa_Rica",
+    ["America/Costa_Rica"] = 722,
+    [ 723] = "America/Cuiaba",
+    ["America/Cuiaba"] = 723,
+    [ 724] = "America/Danmarkshavn",
+    ["America/Danmarkshavn"] = 724,
+    [ 725] = "America/Dawson",
+    ["America/Dawson"] = 725,
+    [ 726] = "America/Dawson_Creek",
+    ["America/Dawson_Creek"] = 726,
+    [ 727] = "America/Denver",
+    ["America/Denver"] = 727,
+    [ 728] = "America/Detroit",
+    ["America/Detroit"] = 728,
+    [ 729] = "America/Edmonton",
+    ["America/Edmonton"] = 729,
+    [ 730] = "America/Eirunepe",
+    ["America/Eirunepe"] = 730,
+    [ 731] = "America/El_Salvador",
+    ["America/El_Salvador"] = 731,
+    [ 732] = "America/Fort_Nelson",
+    ["America/Fort_Nelson"] = 732,
+    [ 733] = "America/Fortaleza",
+    ["America/Fortaleza"] = 733,
+    [ 734] = "America/Glace_Bay",
+    ["America/Glace_Bay"] = 734,
+    [ 735] = "America/Goose_Bay",
+    ["America/Goose_Bay"] = 735,
+    [ 736] = "America/Grand_Turk",
+    ["America/Grand_Turk"] = 736,
+    [ 737] = "America/Guatemala",
+    ["America/Guatemala"] = 737,
+    [ 738] = "America/Guayaquil",
+    ["America/Guayaquil"] = 738,
+    [ 739] = "America/Guyana",
+    ["America/Guyana"] = 739,
+    [ 740] = "America/Halifax",
+    ["America/Halifax"] = 740,
+    [ 741] = "America/Havana",
+    ["America/Havana"] = 741,
+    [ 742] = "America/Hermosillo",
+    ["America/Hermosillo"] = 742,
+    [ 743] = "America/Indiana/Indianapolis",
+    ["America/Indiana/Indianapolis"] = 743,
+    [ 744] = "America/Indiana/Knox",
+    ["America/Indiana/Knox"] = 744,
+    [ 745] = "America/Indiana/Marengo",
+    ["America/Indiana/Marengo"] = 745,
+    [ 746] = "America/Indiana/Petersburg",
+    ["America/Indiana/Petersburg"] = 746,
+    [ 747] = "America/Indiana/Tell_City",
+    ["America/Indiana/Tell_City"] = 747,
+    [ 748] = "America/Indiana/Vevay",
+    ["America/Indiana/Vevay"] = 748,
+    [ 749] = "America/Indiana/Vincennes",
+    ["America/Indiana/Vincennes"] = 749,
+    [ 750] = "America/Indiana/Winamac",
+    ["America/Indiana/Winamac"] = 750,
+    [ 751] = "America/Inuvik",
+    ["America/Inuvik"] = 751,
+    [ 752] = "America/Iqaluit",
+    ["America/Iqaluit"] = 752,
+    [ 753] = "America/Jamaica",
+    ["America/Jamaica"] = 753,
+    [ 754] = "America/Juneau",
+    ["America/Juneau"] = 754,
+    [ 755] = "America/Kentucky/Louisville",
+    ["America/Kentucky/Louisville"] = 755,
+    [ 756] = "America/Kentucky/Monticello",
+    ["America/Kentucky/Monticello"] = 756,
+    [ 757] = "America/La_Paz",
+    ["America/La_Paz"] = 757,
+    [ 758] = "America/Lima",
+    ["America/Lima"] = 758,
+    [ 759] = "America/Los_Angeles",
+    ["America/Los_Angeles"] = 759,
+    [ 760] = "America/Maceio",
+    ["America/Maceio"] = 760,
+    [ 761] = "America/Managua",
+    ["America/Managua"] = 761,
+    [ 762] = "America/Manaus",
+    ["America/Manaus"] = 762,
+    [ 763] = "America/Martinique",
+    ["America/Martinique"] = 763,
+    [ 764] = "America/Matamoros",
+    ["America/Matamoros"] = 764,
+    [ 765] = "America/Mazatlan",
+    ["America/Mazatlan"] = 765,
+    [ 766] = "America/Menominee",
+    ["America/Menominee"] = 766,
+    [ 767] = "America/Merida",
+    ["America/Merida"] = 767,
+    [ 768] = "America/Metlakatla",
+    ["America/Metlakatla"] = 768,
+    [ 769] = "America/Mexico_City",
+    ["America/Mexico_City"] = 769,
+    [ 770] = "America/Miquelon",
+    ["America/Miquelon"] = 770,
+    [ 771] = "America/Moncton",
+    ["America/Moncton"] = 771,
+    [ 772] = "America/Monterrey",
+    ["America/Monterrey"] = 772,
+    [ 773] = "America/Montevideo",
+    ["America/Montevideo"] = 773,
+    [ 774] = "America/New_York",
+    ["America/New_York"] = 774,
+    [ 775] = "America/Nipigon",
+    ["America/Nipigon"] = 775,
+    [ 776] = "America/Nome",
+    ["America/Nome"] = 776,
+    [ 777] = "America/Noronha",
+    ["America/Noronha"] = 777,
+    [ 778] = "America/North_Dakota/Beulah",
+    ["America/North_Dakota/Beulah"] = 778,
+    [ 779] = "America/North_Dakota/Center",
+    ["America/North_Dakota/Center"] = 779,
+    [ 780] = "America/North_Dakota/New_Salem",
+    ["America/North_Dakota/New_Salem"] = 780,
+    [ 781] = "America/Nuuk",
+    ["America/Nuuk"] = 781,
+    [ 782] = "America/Ojinaga",
+    ["America/Ojinaga"] = 782,
+    [ 783] = "America/Panama",
+    ["America/Panama"] = 783,
+    [ 784] = "America/Pangnirtung",
+    ["America/Pangnirtung"] = 784,
+    [ 785] = "America/Paramaribo",
+    ["America/Paramaribo"] = 785,
+    [ 786] = "America/Phoenix",
+    ["America/Phoenix"] = 786,
+    [ 787] = "America/Port-au-Prince",
+    ["America/Port-au-Prince"] = 787,
+    [ 788] = "America/Porto_Velho",
+    ["America/Porto_Velho"] = 788,
+    [ 789] = "America/Puerto_Rico",
+    ["America/Puerto_Rico"] = 789,
+    [ 790] = "America/Punta_Arenas",
+    ["America/Punta_Arenas"] = 790,
+    [ 791] = "America/Rainy_River",
+    ["America/Rainy_River"] = 791,
+    [ 792] = "America/Rankin_Inlet",
+    ["America/Rankin_Inlet"] = 792,
+    [ 793] = "America/Recife",
+    ["America/Recife"] = 793,
+    [ 794] = "America/Regina",
+    ["America/Regina"] = 794,
+    [ 795] = "America/Resolute",
+    ["America/Resolute"] = 795,
+    [ 796] = "America/Rio_Branco",
+    ["America/Rio_Branco"] = 796,
+    [ 797] = "America/Santarem",
+    ["America/Santarem"] = 797,
+    [ 798] = "America/Santiago",
+    ["America/Santiago"] = 798,
+    [ 799] = "America/Santo_Domingo",
+    ["America/Santo_Domingo"] = 799,
+    [ 800] = "America/Sao_Paulo",
+    ["America/Sao_Paulo"] = 800,
+    [ 801] = "America/Scoresbysund",
+    ["America/Scoresbysund"] = 801,
+    [ 802] = "America/Sitka",
+    ["America/Sitka"] = 802,
+    [ 803] = "America/St_Johns",
+    ["America/St_Johns"] = 803,
+    [ 804] = "America/Swift_Current",
+    ["America/Swift_Current"] = 804,
+    [ 805] = "America/Tegucigalpa",
+    ["America/Tegucigalpa"] = 805,
+    [ 806] = "America/Thule",
+    ["America/Thule"] = 806,
+    [ 807] = "America/Thunder_Bay",
+    ["America/Thunder_Bay"] = 807,
+    [ 808] = "America/Tijuana",
+    ["America/Tijuana"] = 808,
+    [ 809] = "America/Toronto",
+    ["America/Toronto"] = 809,
+    [ 810] = "America/Vancouver",
+    ["America/Vancouver"] = 810,
+    [ 811] = "America/Whitehorse",
+    ["America/Whitehorse"] = 811,
+    [ 812] = "America/Winnipeg",
+    ["America/Winnipeg"] = 812,
+    [ 813] = "America/Yakutat",
+    ["America/Yakutat"] = 813,
+    [ 814] = "America/Yellowknife",
+    ["America/Yellowknife"] = 814,
+    [ 815] = "Antarctica/Casey",
+    ["Antarctica/Casey"] = 815,
+    [ 816] = "Antarctica/Davis",
+    ["Antarctica/Davis"] = 816,
+    [ 817] = "Antarctica/Macquarie",
+    ["Antarctica/Macquarie"] = 817,
+    [ 818] = "Antarctica/Mawson",
+    ["Antarctica/Mawson"] = 818,
+    [ 819] = "Antarctica/Palmer",
+    ["Antarctica/Palmer"] = 819,
+    [ 820] = "Antarctica/Rothera",
+    ["Antarctica/Rothera"] = 820,
+    [ 821] = "Antarctica/Troll",
+    ["Antarctica/Troll"] = 821,
+    [ 822] = "Antarctica/Vostok",
+    ["Antarctica/Vostok"] = 822,
+    [ 823] = "Asia/Almaty",
+    ["Asia/Almaty"] = 823,
+    [ 824] = "Asia/Amman",
+    ["Asia/Amman"] = 824,
+    [ 825] = "Asia/Anadyr",
+    ["Asia/Anadyr"] = 825,
+    [ 826] = "Asia/Aqtau",
+    ["Asia/Aqtau"] = 826,
+    [ 827] = "Asia/Aqtobe",
+    ["Asia/Aqtobe"] = 827,
+    [ 828] = "Asia/Ashgabat",
+    ["Asia/Ashgabat"] = 828,
+    [ 829] = "Asia/Atyrau",
+    ["Asia/Atyrau"] = 829,
+    [ 830] = "Asia/Baghdad",
+    ["Asia/Baghdad"] = 830,
+    [ 831] = "Asia/Baku",
+    ["Asia/Baku"] = 831,
+    [ 832] = "Asia/Bangkok",
+    ["Asia/Bangkok"] = 832,
+    [ 833] = "Asia/Barnaul",
+    ["Asia/Barnaul"] = 833,
+    [ 834] = "Asia/Beirut",
+    ["Asia/Beirut"] = 834,
+    [ 835] = "Asia/Bishkek",
+    ["Asia/Bishkek"] = 835,
+    [ 836] = "Asia/Brunei",
+    ["Asia/Brunei"] = 836,
+    [ 837] = "Asia/Chita",
+    ["Asia/Chita"] = 837,
+    [ 838] = "Asia/Choibalsan",
+    ["Asia/Choibalsan"] = 838,
+    [ 839] = "Asia/Colombo",
+    ["Asia/Colombo"] = 839,
+    [ 840] = "Asia/Damascus",
+    ["Asia/Damascus"] = 840,
+    [ 841] = "Asia/Dhaka",
+    ["Asia/Dhaka"] = 841,
+    [ 842] = "Asia/Dili",
+    ["Asia/Dili"] = 842,
+    [ 843] = "Asia/Dubai",
+    ["Asia/Dubai"] = 843,
+    [ 844] = "Asia/Dushanbe",
+    ["Asia/Dushanbe"] = 844,
+    [ 845] = "Asia/Famagusta",
+    ["Asia/Famagusta"] = 845,
+    [ 846] = "Asia/Gaza",
+    ["Asia/Gaza"] = 846,
+    [ 847] = "Asia/Hebron",
+    ["Asia/Hebron"] = 847,
+    [ 848] = "Asia/Ho_Chi_Minh",
+    ["Asia/Ho_Chi_Minh"] = 848,
+    [ 849] = "Asia/Hong_Kong",
+    ["Asia/Hong_Kong"] = 849,
+    [ 850] = "Asia/Hovd",
+    ["Asia/Hovd"] = 850,
+    [ 851] = "Asia/Irkutsk",
+    ["Asia/Irkutsk"] = 851,
+    [ 852] = "Asia/Jakarta",
+    ["Asia/Jakarta"] = 852,
+    [ 853] = "Asia/Jayapura",
+    ["Asia/Jayapura"] = 853,
+    [ 854] = "Asia/Jerusalem",
+    ["Asia/Jerusalem"] = 854,
+    [ 855] = "Asia/Kabul",
+    ["Asia/Kabul"] = 855,
+    [ 856] = "Asia/Kamchatka",
+    ["Asia/Kamchatka"] = 856,
+    [ 857] = "Asia/Karachi",
+    ["Asia/Karachi"] = 857,
+    [ 858] = "Asia/Kathmandu",
+    ["Asia/Kathmandu"] = 858,
+    [ 859] = "Asia/Khandyga",
+    ["Asia/Khandyga"] = 859,
+    [ 860] = "Asia/Kolkata",
+    ["Asia/Kolkata"] = 860,
+    [ 861] = "Asia/Krasnoyarsk",
+    ["Asia/Krasnoyarsk"] = 861,
+    [ 862] = "Asia/Kuala_Lumpur",
+    ["Asia/Kuala_Lumpur"] = 862,
+    [ 863] = "Asia/Kuching",
+    ["Asia/Kuching"] = 863,
+    [ 864] = "Asia/Macau",
+    ["Asia/Macau"] = 864,
+    [ 865] = "Asia/Magadan",
+    ["Asia/Magadan"] = 865,
+    [ 866] = "Asia/Makassar",
+    ["Asia/Makassar"] = 866,
+    [ 867] = "Asia/Manila",
+    ["Asia/Manila"] = 867,
+    [ 868] = "Asia/Nicosia",
+    ["Asia/Nicosia"] = 868,
+    [ 869] = "Asia/Novokuznetsk",
+    ["Asia/Novokuznetsk"] = 869,
+    [ 870] = "Asia/Novosibirsk",
+    ["Asia/Novosibirsk"] = 870,
+    [ 871] = "Asia/Omsk",
+    ["Asia/Omsk"] = 871,
+    [ 872] = "Asia/Oral",
+    ["Asia/Oral"] = 872,
+    [ 873] = "Asia/Pontianak",
+    ["Asia/Pontianak"] = 873,
+    [ 874] = "Asia/Pyongyang",
+    ["Asia/Pyongyang"] = 874,
+    [ 875] = "Asia/Qatar",
+    ["Asia/Qatar"] = 875,
+    [ 876] = "Asia/Qostanay",
+    ["Asia/Qostanay"] = 876,
+    [ 877] = "Asia/Qyzylorda",
+    ["Asia/Qyzylorda"] = 877,
+    [ 878] = "Asia/Riyadh",
+    ["Asia/Riyadh"] = 878,
+    [ 879] = "Asia/Sakhalin",
+    ["Asia/Sakhalin"] = 879,
+    [ 880] = "Asia/Samarkand",
+    ["Asia/Samarkand"] = 880,
+    [ 881] = "Asia/Seoul",
+    ["Asia/Seoul"] = 881,
+    [ 882] = "Asia/Shanghai",
+    ["Asia/Shanghai"] = 882,
+    [ 883] = "Asia/Singapore",
+    ["Asia/Singapore"] = 883,
+    [ 884] = "Asia/Srednekolymsk",
+    ["Asia/Srednekolymsk"] = 884,
+    [ 885] = "Asia/Taipei",
+    ["Asia/Taipei"] = 885,
+    [ 886] = "Asia/Tashkent",
+    ["Asia/Tashkent"] = 886,
+    [ 887] = "Asia/Tbilisi",
+    ["Asia/Tbilisi"] = 887,
+    [ 888] = "Asia/Tehran",
+    ["Asia/Tehran"] = 888,
+    [ 889] = "Asia/Thimphu",
+    ["Asia/Thimphu"] = 889,
+    [ 890] = "Asia/Tokyo",
+    ["Asia/Tokyo"] = 890,
+    [ 891] = "Asia/Tomsk",
+    ["Asia/Tomsk"] = 891,
+    [ 892] = "Asia/Ulaanbaatar",
+    ["Asia/Ulaanbaatar"] = 892,
+    [ 893] = "Asia/Urumqi",
+    ["Asia/Urumqi"] = 893,
+    [ 894] = "Asia/Ust-Nera",
+    ["Asia/Ust-Nera"] = 894,
+    [ 895] = "Asia/Vladivostok",
+    ["Asia/Vladivostok"] = 895,
+    [ 896] = "Asia/Yakutsk",
+    ["Asia/Yakutsk"] = 896,
+    [ 897] = "Asia/Yangon",
+    ["Asia/Yangon"] = 897,
+    [ 898] = "Asia/Yekaterinburg",
+    ["Asia/Yekaterinburg"] = 898,
+    [ 899] = "Asia/Yerevan",
+    ["Asia/Yerevan"] = 899,
+    [ 900] = "Atlantic/Azores",
+    ["Atlantic/Azores"] = 900,
+    [ 901] = "Atlantic/Bermuda",
+    ["Atlantic/Bermuda"] = 901,
+    [ 902] = "Atlantic/Canary",
+    ["Atlantic/Canary"] = 902,
+    [ 903] = "Atlantic/Cape_Verde",
+    ["Atlantic/Cape_Verde"] = 903,
+    [ 904] = "Atlantic/Faroe",
+    ["Atlantic/Faroe"] = 904,
+    [ 905] = "Atlantic/Madeira",
+    ["Atlantic/Madeira"] = 905,
+    [ 906] = "Atlantic/Reykjavik",
+    ["Atlantic/Reykjavik"] = 906,
+    [ 907] = "Atlantic/South_Georgia",
+    ["Atlantic/South_Georgia"] = 907,
+    [ 908] = "Atlantic/Stanley",
+    ["Atlantic/Stanley"] = 908,
+    [ 909] = "Australia/Adelaide",
+    ["Australia/Adelaide"] = 909,
+    [ 910] = "Australia/Brisbane",
+    ["Australia/Brisbane"] = 910,
+    [ 911] = "Australia/Broken_Hill",
+    ["Australia/Broken_Hill"] = 911,
+    [ 912] = "Australia/Darwin",
+    ["Australia/Darwin"] = 912,
+    [ 913] = "Australia/Eucla",
+    ["Australia/Eucla"] = 913,
+    [ 914] = "Australia/Hobart",
+    ["Australia/Hobart"] = 914,
+    [ 915] = "Australia/Lindeman",
+    ["Australia/Lindeman"] = 915,
+    [ 916] = "Australia/Lord_Howe",
+    ["Australia/Lord_Howe"] = 916,
+    [ 917] = "Australia/Melbourne",
+    ["Australia/Melbourne"] = 917,
+    [ 918] = "Australia/Perth",
+    ["Australia/Perth"] = 918,
+    [ 919] = "Australia/Sydney",
+    ["Australia/Sydney"] = 919,
+    [ 920] = "Etc/GMT",
+    ["Etc/GMT"] = 920,
+    [ 921] = "Etc/UTC",
+    ["Etc/UTC"] = 921,
+    [ 922] = "Europe/Amsterdam",
+    ["Europe/Amsterdam"] = 922,
+    [ 923] = "Europe/Andorra",
+    ["Europe/Andorra"] = 923,
+    [ 924] = "Europe/Astrakhan",
+    ["Europe/Astrakhan"] = 924,
+    [ 925] = "Europe/Athens",
+    ["Europe/Athens"] = 925,
+    [ 926] = "Europe/Belgrade",
+    ["Europe/Belgrade"] = 926,
+    [ 927] = "Europe/Berlin",
+    ["Europe/Berlin"] = 927,
+    [ 928] = "Europe/Brussels",
+    ["Europe/Brussels"] = 928,
+    [ 929] = "Europe/Bucharest",
+    ["Europe/Bucharest"] = 929,
+    [ 930] = "Europe/Budapest",
+    ["Europe/Budapest"] = 930,
+    [ 931] = "Europe/Chisinau",
+    ["Europe/Chisinau"] = 931,
+    [ 932] = "Europe/Copenhagen",
+    ["Europe/Copenhagen"] = 932,
+    [ 933] = "Europe/Dublin",
+    ["Europe/Dublin"] = 933,
+    [ 934] = "Europe/Gibraltar",
+    ["Europe/Gibraltar"] = 934,
+    [ 935] = "Europe/Helsinki",
+    ["Europe/Helsinki"] = 935,
+    [ 936] = "Europe/Istanbul",
+    ["Europe/Istanbul"] = 936,
+    [ 937] = "Europe/Kaliningrad",
+    ["Europe/Kaliningrad"] = 937,
+    [ 938] = "Europe/Kiev",
+    ["Europe/Kiev"] = 938,
+    [ 939] = "Europe/Kirov",
+    ["Europe/Kirov"] = 939,
+    [ 940] = "Europe/Lisbon",
+    ["Europe/Lisbon"] = 940,
+    [ 941] = "Europe/London",
+    ["Europe/London"] = 941,
+    [ 942] = "Europe/Luxembourg",
+    ["Europe/Luxembourg"] = 942,
+    [ 943] = "Europe/Madrid",
+    ["Europe/Madrid"] = 943,
+    [ 944] = "Europe/Malta",
+    ["Europe/Malta"] = 944,
+    [ 945] = "Europe/Minsk",
+    ["Europe/Minsk"] = 945,
+    [ 946] = "Europe/Monaco",
+    ["Europe/Monaco"] = 946,
+    [ 947] = "Europe/Moscow",
+    ["Europe/Moscow"] = 947,
+    [ 948] = "Europe/Oslo",
+    ["Europe/Oslo"] = 948,
+    [ 949] = "Europe/Paris",
+    ["Europe/Paris"] = 949,
+    [ 950] = "Europe/Prague",
+    ["Europe/Prague"] = 950,
+    [ 951] = "Europe/Riga",
+    ["Europe/Riga"] = 951,
+    [ 952] = "Europe/Rome",
+    ["Europe/Rome"] = 952,
+    [ 953] = "Europe/Samara",
+    ["Europe/Samara"] = 953,
+    [ 954] = "Europe/Saratov",
+    ["Europe/Saratov"] = 954,
+    [ 955] = "Europe/Simferopol",
+    ["Europe/Simferopol"] = 955,
+    [ 956] = "Europe/Sofia",
+    ["Europe/Sofia"] = 956,
+    [ 957] = "Europe/Stockholm",
+    ["Europe/Stockholm"] = 957,
+    [ 958] = "Europe/Tallinn",
+    ["Europe/Tallinn"] = 958,
+    [ 959] = "Europe/Tirane",
+    ["Europe/Tirane"] = 959,
+    [ 960] = "Europe/Ulyanovsk",
+    ["Europe/Ulyanovsk"] = 960,
+    [ 961] = "Europe/Uzhgorod",
+    ["Europe/Uzhgorod"] = 961,
+    [ 962] = "Europe/Vienna",
+    ["Europe/Vienna"] = 962,
+    [ 963] = "Europe/Vilnius",
+    ["Europe/Vilnius"] = 963,
+    [ 964] = "Europe/Volgograd",
+    ["Europe/Volgograd"] = 964,
+    [ 965] = "Europe/Warsaw",
+    ["Europe/Warsaw"] = 965,
+    [ 966] = "Europe/Zaporozhye",
+    ["Europe/Zaporozhye"] = 966,
+    [ 967] = "Europe/Zurich",
+    ["Europe/Zurich"] = 967,
+    [ 968] = "Indian/Chagos",
+    ["Indian/Chagos"] = 968,
+    [ 969] = "Indian/Christmas",
+    ["Indian/Christmas"] = 969,
+    [ 970] = "Indian/Cocos",
+    ["Indian/Cocos"] = 970,
+    [ 971] = "Indian/Kerguelen",
+    ["Indian/Kerguelen"] = 971,
+    [ 972] = "Indian/Mahe",
+    ["Indian/Mahe"] = 972,
+    [ 973] = "Indian/Maldives",
+    ["Indian/Maldives"] = 973,
+    [ 974] = "Indian/Mauritius",
+    ["Indian/Mauritius"] = 974,
+    [ 975] = "Indian/Reunion",
+    ["Indian/Reunion"] = 975,
+    [ 976] = "Pacific/Apia",
+    ["Pacific/Apia"] = 976,
+    [ 977] = "Pacific/Auckland",
+    ["Pacific/Auckland"] = 977,
+    [ 978] = "Pacific/Bougainville",
+    ["Pacific/Bougainville"] = 978,
+    [ 979] = "Pacific/Chatham",
+    ["Pacific/Chatham"] = 979,
+    [ 980] = "Pacific/Chuuk",
+    ["Pacific/Chuuk"] = 980,
+    [ 981] = "Pacific/Easter",
+    ["Pacific/Easter"] = 981,
+    [ 982] = "Pacific/Efate",
+    ["Pacific/Efate"] = 982,
+    [ 983] = "Pacific/Fakaofo",
+    ["Pacific/Fakaofo"] = 983,
+    [ 984] = "Pacific/Fiji",
+    ["Pacific/Fiji"] = 984,
+    [ 985] = "Pacific/Funafuti",
+    ["Pacific/Funafuti"] = 985,
+    [ 986] = "Pacific/Galapagos",
+    ["Pacific/Galapagos"] = 986,
+    [ 987] = "Pacific/Gambier",
+    ["Pacific/Gambier"] = 987,
+    [ 988] = "Pacific/Guadalcanal",
+    ["Pacific/Guadalcanal"] = 988,
+    [ 989] = "Pacific/Guam",
+    ["Pacific/Guam"] = 989,
+    [ 990] = "Pacific/Honolulu",
+    ["Pacific/Honolulu"] = 990,
+    [ 991] = "Pacific/Kanton",
+    ["Pacific/Kanton"] = 991,
+    [ 992] = "Pacific/Kiritimati",
+    ["Pacific/Kiritimati"] = 992,
+    [ 993] = "Pacific/Kosrae",
+    ["Pacific/Kosrae"] = 993,
+    [ 994] = "Pacific/Kwajalein",
+    ["Pacific/Kwajalein"] = 994,
+    [ 995] = "Pacific/Majuro",
+    ["Pacific/Majuro"] = 995,
+    [ 996] = "Pacific/Marquesas",
+    ["Pacific/Marquesas"] = 996,
+    [ 997] = "Pacific/Nauru",
+    ["Pacific/Nauru"] = 997,
+    [ 998] = "Pacific/Niue",
+    ["Pacific/Niue"] = 998,
+    [ 999] = "Pacific/Norfolk",
+    ["Pacific/Norfolk"] = 999,
+    [1000] = "Pacific/Noumea",
+    ["Pacific/Noumea"] = 1000,
+    [1001] = "Pacific/Pago_Pago",
+    ["Pacific/Pago_Pago"] = 1001,
+    [1002] = "Pacific/Palau",
+    ["Pacific/Palau"] = 1002,
+    [1003] = "Pacific/Pitcairn",
+    ["Pacific/Pitcairn"] = 1003,
+    [1004] = "Pacific/Pohnpei",
+    ["Pacific/Pohnpei"] = 1004,
+    [1005] = "Pacific/Port_Moresby",
+    ["Pacific/Port_Moresby"] = 1005,
+    [1006] = "Pacific/Rarotonga",
+    ["Pacific/Rarotonga"] = 1006,
+    [1007] = "Pacific/Tahiti",
+    ["Pacific/Tahiti"] = 1007,
+    [1008] = "Pacific/Tarawa",
+    ["Pacific/Tarawa"] = 1008,
+    [1009] = "Pacific/Tongatapu",
+    ["Pacific/Tongatapu"] = 1009,
+    [1010] = "Pacific/Wake",
+    ["Pacific/Wake"] = 1010,
+    [1011] = "Pacific/Wallis",
+    ["Pacific/Wallis"] = 1011,
+}
diff --git a/test/app-tap/datetime.test.lua b/test/app-tap/datetime.test.lua
index dca81104cd37feece8d7731e815b1ed985fecef3..b0fb130fbd31250ce3e674eb8cf17bf2ceab20b6 100755
--- a/test/app-tap/datetime.test.lua
+++ b/test/app-tap/datetime.test.lua
@@ -4,6 +4,7 @@ local tap = require('tap')
 local test = tap.test('errno')
 local date = require('datetime')
 local ffi = require('ffi')
+local TZ = date.TZ
 
 --[[
     Workaround for #6599 where we may randomly fail on AWS Graviton machines,
@@ -597,7 +598,7 @@ test:test("Parsing of timezone abbrevs", function(test)
 end)
 
 test:test("Parsing of timezone names (tzindex)", function(test)
-    test:plan(308)
+    test:plan(396)
     local zone_abbrevs = {
         -- military
         A =  1, B =  2, C =  3,
@@ -636,8 +637,12 @@ test:test("Parsing of timezone names (tzindex)", function(test)
         local date, len = date.parse(date_text)
         print(zone, index)
         test:isnt(date, nil, 'parse ' .. zone)
-        test:is(date.tzindex, index, 'expected tzindex')
-        test:is(date.tz, zone, 'expected timezone name')
+        local tzname = date.tz
+        local tzindex = date.tzindex
+        test:is(tzindex, index, 'expected tzindex')
+        test:is(tzname, zone, 'expected timezone name')
+        test:is(TZ[tzindex], tzname, ('TZ[%d] => %s'):format(tzindex, tzname))
+        test:is(TZ[tzname], tzindex, ('TZ[%s] => %d'):format(tzname, tzindex))
         test:ok(len > #base_date, 'length longer than ' .. #base_date)
         local txt = tostring(date)
         test:is(1, txt:find(exp_pattern), 'expected prefix')