diff options
| author | gingerBill <bill@gingerbill.org> | 2025-01-05 13:08:01 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2025-01-05 13:08:01 +0000 |
| commit | d718db473c8d2c13f569b3c7e69951c7c845d8c3 (patch) | |
| tree | 2399b516c86f83bdca3f66efa7c813123489e509 /core/time | |
| parent | 4d63ee0794000d4455cbc18b9365677708cbc96e (diff) | |
Use array with linear search rather than a hash map.
Diffstat (limited to 'core/time')
| -rw-r--r-- | core/time/timezone/tz_windows.odin | 294 |
1 files changed, 153 insertions, 141 deletions
diff --git a/core/time/timezone/tz_windows.odin b/core/time/timezone/tz_windows.odin index 238c4c933..835f98d28 100644 --- a/core/time/timezone/tz_windows.odin +++ b/core/time/timezone/tz_windows.odin @@ -11,146 +11,147 @@ TZ_Abbrev :: struct { dst: string, } -tz_abbrevs := map[string]TZ_Abbrev { - "Egypt Standard Time" = {"EET", "EEST"}, // Africa/Cairo - "Morocco Standard Time" = {"+00", "+01"}, // Africa/Casablanca - "South Africa Standard Time" = {"SAST", "SAST"}, // Africa/Johannesburg - "South Sudan Standard Time" = {"CAT", "CAT"}, // Africa/Juba - "Sudan Standard Time" = {"CAT", "CAT"}, // Africa/Khartoum - "W. Central Africa Standard Time" = {"WAT", "WAT"}, // Africa/Lagos - "E. Africa Standard Time" = {"EAT", "EAT"}, // Africa/Nairobi - "Sao Tome Standard Time" = {"GMT", "GMT"}, // Africa/Sao_Tome - "Libya Standard Time" = {"EET", "EET"}, // Africa/Tripoli - "Namibia Standard Time" = {"CAT", "CAT"}, // Africa/Windhoek - "Aleutian Standard Time" = {"HST", "HDT"}, // America/Adak - "Alaskan Standard Time" = {"AKST", "AKDT"}, // America/Anchorage - "Tocantins Standard Time" = {"-03", "-03"}, // America/Araguaina - "Paraguay Standard Time" = {"-04", "-03"}, // America/Asuncion - "Bahia Standard Time" = {"-03", "-03"}, // America/Bahia - "SA Pacific Standard Time" = {"-05", "-05"}, // America/Bogota - "Argentina Standard Time" = {"-03", "-03"}, // America/Buenos_Aires - "Eastern Standard Time (Mexico)" = {"EST", "EST"}, // America/Cancun - "Venezuela Standard Time" = {"-04", "-04"}, // America/Caracas - "SA Eastern Standard Time" = {"-03", "-03"}, // America/Cayenne - "Central Standard Time" = {"CST", "CDT"}, // America/Chicago - "Central Brazilian Standard Time" = {"-04", "-04"}, // America/Cuiaba - "Mountain Standard Time" = {"MST", "MDT"}, // America/Denver - "Greenland Standard Time" = {"-03", "-02"}, // America/Godthab - "Turks And Caicos Standard Time" = {"EST", "EDT"}, // America/Grand_Turk - "Central America Standard Time" = {"CST", "CST"}, // America/Guatemala - "Atlantic Standard Time" = {"AST", "ADT"}, // America/Halifax - "Cuba Standard Time" = {"CST", "CDT"}, // America/Havana - "US Eastern Standard Time" = {"EST", "EDT"}, // America/Indianapolis - "SA Western Standard Time" = {"-04", "-04"}, // America/La_Paz - "Pacific Standard Time" = {"PST", "PDT"}, // America/Los_Angeles - "Mountain Standard Time (Mexico)" = {"MST", "MST"}, // America/Mazatlan - "Central Standard Time (Mexico)" = {"CST", "CST"}, // America/Mexico_City - "Saint Pierre Standard Time" = {"-03", "-02"}, // America/Miquelon - "Montevideo Standard Time" = {"-03", "-03"}, // America/Montevideo - "Eastern Standard Time" = {"EST", "EDT"}, // America/New_York - "US Mountain Standard Time" = {"MST", "MST"}, // America/Phoenix - "Haiti Standard Time" = {"EST", "EDT"}, // America/Port-au-Prince - "Magallanes Standard Time" = {"-03", "-03"}, // America/Punta_Arenas - "Canada Central Standard Time" = {"CST", "CST"}, // America/Regina - "Pacific SA Standard Time" = {"-04", "-03"}, // America/Santiago - "E. South America Standard Time" = {"-03", "-03"}, // America/Sao_Paulo - "Newfoundland Standard Time" = {"NST", "NDT"}, // America/St_Johns - "Pacific Standard Time (Mexico)" = {"PST", "PDT"}, // America/Tijuana - "Yukon Standard Time" = {"MST", "MST"}, // America/Whitehorse - "Central Asia Standard Time" = {"+06", "+06"}, // Asia/Almaty - "Jordan Standard Time" = {"+03", "+03"}, // Asia/Amman - "Arabic Standard Time" = {"+03", "+03"}, // Asia/Baghdad - "Azerbaijan Standard Time" = {"+04", "+04"}, // Asia/Baku - "SE Asia Standard Time" = {"+07", "+07"}, // Asia/Bangkok - "Altai Standard Time" = {"+07", "+07"}, // Asia/Barnaul - "Middle East Standard Time" = {"EET", "EEST"}, // Asia/Beirut - "India Standard Time" = {"IST", "IST"}, // Asia/Calcutta - "Transbaikal Standard Time" = {"+09", "+09"}, // Asia/Chita - "Sri Lanka Standard Time" = {"+0530", "+0530"}, // Asia/Colombo - "Syria Standard Time" = {"+03", "+03"}, // Asia/Damascus - "Bangladesh Standard Time" = {"+06", "+06"}, // Asia/Dhaka - "Arabian Standard Time" = {"+04", "+04"}, // Asia/Dubai - "West Bank Standard Time" = {"EET", "EEST"}, // Asia/Hebron - "W. Mongolia Standard Time" = {"+07", "+07"}, // Asia/Hovd - "North Asia East Standard Time" = {"+08", "+08"}, // Asia/Irkutsk - "Israel Standard Time" = {"IST", "IDT"}, // Asia/Jerusalem - "Afghanistan Standard Time" = {"+0430", "+0430"}, // Asia/Kabul - "Russia Time Zone 11" = {"+12", "+12"}, // Asia/Kamchatka - "Pakistan Standard Time" = {"PKT", "PKT"}, // Asia/Karachi - "Nepal Standard Time" = {"+0545", "+0545"}, // Asia/Katmandu - "North Asia Standard Time" = {"+07", "+07"}, // Asia/Krasnoyarsk - "Magadan Standard Time" = {"+11", "+11"}, // Asia/Magadan - "N. Central Asia Standard Time" = {"+07", "+07"}, // Asia/Novosibirsk - "Omsk Standard Time" = {"+06", "+06"}, // Asia/Omsk - "North Korea Standard Time" = {"KST", "KST"}, // Asia/Pyongyang - "Qyzylorda Standard Time" = {"+05", "+05"}, // Asia/Qyzylorda - "Myanmar Standard Time" = {"+0630", "+0630"}, // Asia/Rangoon - "Arab Standard Time" = {"+03", "+03"}, // Asia/Riyadh - "Sakhalin Standard Time" = {"+11", "+11"}, // Asia/Sakhalin - "Korea Standard Time" = {"KST", "KST"}, // Asia/Seoul - "China Standard Time" = {"CST", "CST"}, // Asia/Shanghai - "Singapore Standard Time" = {"+08", "+08"}, // Asia/Singapore - "Russia Time Zone 10" = {"+11", "+11"}, // Asia/Srednekolymsk - "Taipei Standard Time" = {"CST", "CST"}, // Asia/Taipei - "West Asia Standard Time" = {"+05", "+05"}, // Asia/Tashkent - "Georgian Standard Time" = {"+04", "+04"}, // Asia/Tbilisi - "Iran Standard Time" = {"+0330", "+0330"}, // Asia/Tehran - "Tokyo Standard Time" = {"JST", "JST"}, // Asia/Tokyo - "Tomsk Standard Time" = {"+07", "+07"}, // Asia/Tomsk - "Ulaanbaatar Standard Time" = {"+08", "+08"}, // Asia/Ulaanbaatar - "Vladivostok Standard Time" = {"+10", "+10"}, // Asia/Vladivostok - "Yakutsk Standard Time" = {"+09", "+09"}, // Asia/Yakutsk - "Ekaterinburg Standard Time" = {"+05", "+05"}, // Asia/Yekaterinburg - "Caucasus Standard Time" = {"+04", "+04"}, // Asia/Yerevan - "Azores Standard Time" = {"-01", "+00"}, // Atlantic/Azores - "Cape Verde Standard Time" = {"-01", "-01"}, // Atlantic/Cape_Verde - "Greenwich Standard Time" = {"GMT", "GMT"}, // Atlantic/Reykjavik - "Cen. Australia Standard Time" = {"ACST", "ACDT"}, // Australia/Adelaide - "E. Australia Standard Time" = {"AEST", "AEST"}, // Australia/Brisbane - "AUS Central Standard Time" = {"ACST", "ACST"}, // Australia/Darwin - "Aus Central W. Standard Time" = {"+0845", "+0845"}, // Australia/Eucla - "Tasmania Standard Time" = {"AEST", "AEDT"}, // Australia/Hobart - "Lord Howe Standard Time" = {"+1030", "+11"}, // Australia/Lord_Howe - "W. Australia Standard Time" = {"AWST", "AWST"}, // Australia/Perth - "AUS Eastern Standard Time" = {"AEST", "AEDT"}, // Australia/Sydney - "UTC-11" = {"-11", "-11"}, // Etc/GMT+11 - "Dateline Standard Time" = {"-12", "-12"}, // Etc/GMT+12 - "UTC-02" = {"-02", "-02"}, // Etc/GMT+2 - "UTC-08" = {"-08", "-08"}, // Etc/GMT+8 - "UTC-09" = {"-09", "-09"}, // Etc/GMT+9 - "UTC+12" = {"+12", "+12"}, // Etc/GMT-12 - "UTC+13" = {"+13", "+13"}, // Etc/GMT-13 - "UTC" = {"UTC", "UTC"}, // Etc/UTC - "Astrakhan Standard Time" = {"+04", "+04"}, // Europe/Astrakhan - "W. Europe Standard Time" = {"CET", "CEST"}, // Europe/Berlin - "GTB Standard Time" = {"EET", "EEST"}, // Europe/Bucharest - "Central Europe Standard Time" = {"CET", "CEST"}, // Europe/Budapest - "E. Europe Standard Time" = {"EET", "EEST"}, // Europe/Chisinau - "Turkey Standard Time" = {"+03", "+03"}, // Europe/Istanbul - "Kaliningrad Standard Time" = {"EET", "EET"}, // Europe/Kaliningrad - "FLE Standard Time" = {"EET", "EEST"}, // Europe/Kiev - "GMT Standard Time" = {"GMT", "BST"}, // Europe/London - "Belarus Standard Time" = {"+03", "+03"}, // Europe/Minsk - "Russian Standard Time" = {"MSK", "MSK"}, // Europe/Moscow - "Romance Standard Time" = {"CET", "CEST"}, // Europe/Paris - "Russia Time Zone 3" = {"+04", "+04"}, // Europe/Samara - "Saratov Standard Time" = {"+04", "+04"}, // Europe/Saratov - "Volgograd Standard Time" = {"MSK", "MSK"}, // Europe/Volgograd - "Central European Standard Time" = {"CET", "CEST"}, // Europe/Warsaw - "Mauritius Standard Time" = {"+04", "+04"}, // Indian/Mauritius - "Samoa Standard Time" = {"+13", "+13"}, // Pacific/Apia - "New Zealand Standard Time" = {"NZST", "NZDT"}, // Pacific/Auckland - "Bougainville Standard Time" = {"+11", "+11"}, // Pacific/Bougainville - "Chatham Islands Standard Time" = {"+1245", "+1345"}, // Pacific/Chatham - "Easter Island Standard Time" = {"-06", "-05"}, // Pacific/Easter - "Fiji Standard Time" = {"+12", "+12"}, // Pacific/Fiji - "Central Pacific Standard Time" = {"+11", "+11"}, // Pacific/Guadalcanal - "Hawaiian Standard Time" = {"HST", "HST"}, // Pacific/Honolulu - "Line Islands Standard Time" = {"+14", "+14"}, // Pacific/Kiritimati - "Marquesas Standard Time" = {"-0930", "-0930"}, // Pacific/Marquesas - "Norfolk Standard Time" = {"+11", "+12"}, // Pacific/Norfolk - "West Pacific Standard Time" = {"+10", "+10"}, // Pacific/Port_Moresby - "Tonga Standard Time" = {"+13", "+13"}, // Pacific/Tongatapu +@(rodata) +tz_abbrevs := [?]struct{key: string, value: TZ_Abbrev}{ + {"Egypt Standard Time", {"EET", "EEST"}}, // Africa/Cairo + {"Morocco Standard Time", {"+00", "+01"}}, // Africa/Casablanca + {"South Africa Standard Time", {"SAST", "SAST"}}, // Africa/Johannesburg + {"South Sudan Standard Time", {"CAT", "CAT"}}, // Africa/Juba + {"Sudan Standard Time", {"CAT", "CAT"}}, // Africa/Khartoum + {"W. Central Africa Standard Time", {"WAT", "WAT"}}, // Africa/Lagos + {"E. Africa Standard Time", {"EAT", "EAT"}}, // Africa/Nairobi + {"Sao Tome Standard Time", {"GMT", "GMT"}}, // Africa/Sao_Tome + {"Libya Standard Time", {"EET", "EET"}}, // Africa/Tripoli + {"Namibia Standard Time", {"CAT", "CAT"}}, // Africa/Windhoek + {"Aleutian Standard Time", {"HST", "HDT"}}, // America/Adak + {"Alaskan Standard Time", {"AKST", "AKDT"}}, // America/Anchorage + {"Tocantins Standard Time", {"-03", "-03"}}, // America/Araguaina + {"Paraguay Standard Time", {"-04", "-03"}}, // America/Asuncion + {"Bahia Standard Time", {"-03", "-03"}}, // America/Bahia + {"SA Pacific Standard Time", {"-05", "-05"}}, // America/Bogota + {"Argentina Standard Time", {"-03", "-03"}}, // America/Buenos_Aires + {"Eastern Standard Time (Mexico)", {"EST", "EST"}}, // America/Cancun + {"Venezuela Standard Time", {"-04", "-04"}}, // America/Caracas + {"SA Eastern Standard Time", {"-03", "-03"}}, // America/Cayenne + {"Central Standard Time", {"CST", "CDT"}}, // America/Chicago + {"Central Brazilian Standard Time", {"-04", "-04"}}, // America/Cuiaba + {"Mountain Standard Time", {"MST", "MDT"}}, // America/Denver + {"Greenland Standard Time", {"-03", "-02"}}, // America/Godthab + {"Turks And Caicos Standard Time", {"EST", "EDT"}}, // America/Grand_Turk + {"Central America Standard Time", {"CST", "CST"}}, // America/Guatemala + {"Atlantic Standard Time", {"AST", "ADT"}}, // America/Halifax + {"Cuba Standard Time", {"CST", "CDT"}}, // America/Havana + {"US Eastern Standard Time", {"EST", "EDT"}}, // America/Indianapolis + {"SA Western Standard Time", {"-04", "-04"}}, // America/La_Paz + {"Pacific Standard Time", {"PST", "PDT"}}, // America/Los_Angeles + {"Mountain Standard Time (Mexico)", {"MST", "MST"}}, // America/Mazatlan + {"Central Standard Time (Mexico)", {"CST", "CST"}}, // America/Mexico_City + {"Saint Pierre Standard Time", {"-03", "-02"}}, // America/Miquelon + {"Montevideo Standard Time", {"-03", "-03"}}, // America/Montevideo + {"Eastern Standard Time", {"EST", "EDT"}}, // America/New_York + {"US Mountain Standard Time", {"MST", "MST"}}, // America/Phoenix + {"Haiti Standard Time", {"EST", "EDT"}}, // America/Port-au-Prince + {"Magallanes Standard Time", {"-03", "-03"}}, // America/Punta_Arenas + {"Canada Central Standard Time", {"CST", "CST"}}, // America/Regina + {"Pacific SA Standard Time", {"-04", "-03"}}, // America/Santiago + {"E. South America Standard Time", {"-03", "-03"}}, // America/Sao_Paulo + {"Newfoundland Standard Time", {"NST", "NDT"}}, // America/St_Johns + {"Pacific Standard Time (Mexico)", {"PST", "PDT"}}, // America/Tijuana + {"Yukon Standard Time", {"MST", "MST"}}, // America/Whitehorse + {"Central Asia Standard Time", {"+06", "+06"}}, // Asia/Almaty + {"Jordan Standard Time", {"+03", "+03"}}, // Asia/Amman + {"Arabic Standard Time", {"+03", "+03"}}, // Asia/Baghdad + {"Azerbaijan Standard Time", {"+04", "+04"}}, // Asia/Baku + {"SE Asia Standard Time", {"+07", "+07"}}, // Asia/Bangkok + {"Altai Standard Time", {"+07", "+07"}}, // Asia/Barnaul + {"Middle East Standard Time", {"EET", "EEST"}}, // Asia/Beirut + {"India Standard Time", {"IST", "IST"}}, // Asia/Calcutta + {"Transbaikal Standard Time", {"+09", "+09"}}, // Asia/Chita + {"Sri Lanka Standard Time", {"+0530", "+0530"}}, // Asia/Colombo + {"Syria Standard Time", {"+03", "+03"}}, // Asia/Damascus + {"Bangladesh Standard Time", {"+06", "+06"}}, // Asia/Dhaka + {"Arabian Standard Time", {"+04", "+04"}}, // Asia/Dubai + {"West Bank Standard Time", {"EET", "EEST"}}, // Asia/Hebron + {"W. Mongolia Standard Time", {"+07", "+07"}}, // Asia/Hovd + {"North Asia East Standard Time", {"+08", "+08"}}, // Asia/Irkutsk + {"Israel Standard Time", {"IST", "IDT"}}, // Asia/Jerusalem + {"Afghanistan Standard Time", {"+0430", "+0430"}}, // Asia/Kabul + {"Russia Time Zone 11", {"+12", "+12"}}, // Asia/Kamchatka + {"Pakistan Standard Time", {"PKT", "PKT"}}, // Asia/Karachi + {"Nepal Standard Time", {"+0545", "+0545"}}, // Asia/Katmandu + {"North Asia Standard Time", {"+07", "+07"}}, // Asia/Krasnoyarsk + {"Magadan Standard Time", {"+11", "+11"}}, // Asia/Magadan + {"N. Central Asia Standard Time", {"+07", "+07"}}, // Asia/Novosibirsk + {"Omsk Standard Time", {"+06", "+06"}}, // Asia/Omsk + {"North Korea Standard Time", {"KST", "KST"}}, // Asia/Pyongyang + {"Qyzylorda Standard Time", {"+05", "+05"}}, // Asia/Qyzylorda + {"Myanmar Standard Time", {"+0630", "+0630"}}, // Asia/Rangoon + {"Arab Standard Time", {"+03", "+03"}}, // Asia/Riyadh + {"Sakhalin Standard Time", {"+11", "+11"}}, // Asia/Sakhalin + {"Korea Standard Time", {"KST", "KST"}}, // Asia/Seoul + {"China Standard Time", {"CST", "CST"}}, // Asia/Shanghai + {"Singapore Standard Time", {"+08", "+08"}}, // Asia/Singapore + {"Russia Time Zone 10", {"+11", "+11"}}, // Asia/Srednekolymsk + {"Taipei Standard Time", {"CST", "CST"}}, // Asia/Taipei + {"West Asia Standard Time", {"+05", "+05"}}, // Asia/Tashkent + {"Georgian Standard Time", {"+04", "+04"}}, // Asia/Tbilisi + {"Iran Standard Time", {"+0330", "+0330"}}, // Asia/Tehran + {"Tokyo Standard Time", {"JST", "JST"}}, // Asia/Tokyo + {"Tomsk Standard Time", {"+07", "+07"}}, // Asia/Tomsk + {"Ulaanbaatar Standard Time", {"+08", "+08"}}, // Asia/Ulaanbaatar + {"Vladivostok Standard Time", {"+10", "+10"}}, // Asia/Vladivostok + {"Yakutsk Standard Time", {"+09", "+09"}}, // Asia/Yakutsk + {"Ekaterinburg Standard Time", {"+05", "+05"}}, // Asia/Yekaterinburg + {"Caucasus Standard Time", {"+04", "+04"}}, // Asia/Yerevan + {"Azores Standard Time", {"-01", "+00"}}, // Atlantic/Azores + {"Cape Verde Standard Time", {"-01", "-01"}}, // Atlantic/Cape_Verde + {"Greenwich Standard Time", {"GMT", "GMT"}}, // Atlantic/Reykjavik + {"Cen. Australia Standard Time", {"ACST", "ACDT"}}, // Australia/Adelaide + {"E. Australia Standard Time", {"AEST", "AEST"}}, // Australia/Brisbane + {"AUS Central Standard Time", {"ACST", "ACST"}}, // Australia/Darwin + {"Aus Central W. Standard Time", {"+0845", "+0845"}}, // Australia/Eucla + {"Tasmania Standard Time", {"AEST", "AEDT"}}, // Australia/Hobart + {"Lord Howe Standard Time", {"+1030", "+11"}}, // Australia/Lord_Howe + {"W. Australia Standard Time", {"AWST", "AWST"}}, // Australia/Perth + {"AUS Eastern Standard Time", {"AEST", "AEDT"}}, // Australia/Sydney + {"UTC-11", {"-11", "-11"}}, // Etc/GMT+11 + {"Dateline Standard Time", {"-12", "-12"}}, // Etc/GMT+12 + {"UTC-02", {"-02", "-02"}}, // Etc/GMT+2 + {"UTC-08", {"-08", "-08"}}, // Etc/GMT+8 + {"UTC-09", {"-09", "-09"}}, // Etc/GMT+9 + {"UTC+12", {"+12", "+12"}}, // Etc/GMT-12 + {"UTC+13", {"+13", "+13"}}, // Etc/GMT-13 + {"UTC", {"UTC", "UTC"}}, // Etc/UTC + {"Astrakhan Standard Time", {"+04", "+04"}}, // Europe/Astrakhan + {"W. Europe Standard Time", {"CET", "CEST"}}, // Europe/Berlin + {"GTB Standard Time", {"EET", "EEST"}}, // Europe/Bucharest + {"Central Europe Standard Time", {"CET", "CEST"}}, // Europe/Budapest + {"E. Europe Standard Time", {"EET", "EEST"}}, // Europe/Chisinau + {"Turkey Standard Time", {"+03", "+03"}}, // Europe/Istanbul + {"Kaliningrad Standard Time", {"EET", "EET"}}, // Europe/Kaliningrad + {"FLE Standard Time", {"EET", "EEST"}}, // Europe/Kiev + {"GMT Standard Time", {"GMT", "BST"}}, // Europe/London + {"Belarus Standard Time", {"+03", "+03"}}, // Europe/Minsk + {"Russian Standard Time", {"MSK", "MSK"}}, // Europe/Moscow + {"Romance Standard Time", {"CET", "CEST"}}, // Europe/Paris + {"Russia Time Zone 3", {"+04", "+04"}}, // Europe/Samara + {"Saratov Standard Time", {"+04", "+04"}}, // Europe/Saratov + {"Volgograd Standard Time", {"MSK", "MSK"}}, // Europe/Volgograd + {"Central European Standard Time", {"CET", "CEST"}}, // Europe/Warsaw + {"Mauritius Standard Time", {"+04", "+04"}}, // Indian/Mauritius + {"Samoa Standard Time", {"+13", "+13"}}, // Pacific/Apia + {"New Zealand Standard Time", {"NZST", "NZDT"}}, // Pacific/Auckland + {"Bougainville Standard Time", {"+11", "+11"}}, // Pacific/Bougainville + {"Chatham Islands Standard Time", {"+1245", "+1345"}}, // Pacific/Chatham + {"Easter Island Standard Time", {"-06", "-05"}}, // Pacific/Easter + {"Fiji Standard Time", {"+12", "+12"}}, // Pacific/Fiji + {"Central Pacific Standard Time", {"+11", "+11"}}, // Pacific/Guadalcanal + {"Hawaiian Standard Time", {"HST", "HST"}}, // Pacific/Honolulu + {"Line Islands Standard Time", {"+14", "+14"}}, // Pacific/Kiritimati + {"Marquesas Standard Time", {"-0930", "-0930"}}, // Pacific/Marquesas + {"Norfolk Standard Time", {"+11", "+12"}}, // Pacific/Norfolk + {"West Pacific Standard Time", {"+10", "+10"}}, // Pacific/Port_Moresby + {"Tonga Standard Time", {"+13", "+13"}}, // Pacific/Tongatapu } iana_to_windows_tz :: proc(iana_name: string, allocator := context.allocator) -> (name: string, success: bool) { @@ -269,7 +270,18 @@ _region_load :: proc(reg_str: string, allocator := context.allocator) -> (out_re defer delete(wintz_name, allocator) defer delete(iana_name, allocator) - abbrevs := tz_abbrevs[wintz_name] or_return + abbrevs: TZ_Abbrev + abbrevs_ok: bool + for pair in tz_abbrevs { + if pair.key == wintz_name { + abbrevs = pair.value + abbrevs_ok = true + break + } + } + if abbrevs_ok { + return + } if abbrevs.std == "UTC" && abbrevs.dst == abbrevs.std { return nil, true } |