Skip to content

Instantly share code, notes, and snippets.

@mlocati
Last active October 23, 2024 17:13
Show Gist options
  • Save mlocati/8de27740d24f98c78373b825a5cd5117 to your computer and use it in GitHub Desktop.
Save mlocati/8de27740d24f98c78373b825a5cd5117 to your computer and use it in GitHub Desktop.
Convert time zone identifiers to/from PHP from/to Windows
<?php
/*
* License: MIT
* Author: Michele Locati <[email protected]>
*/
declare(strict_types=1);
set_error_handler(
static function ($errno, $errstr) {
throw new RuntimeException($errstr);
},
-1
);
function getXMLDocument(): DOMDocument
{
$xml = file_get_contents('https://raw.githubusercontent.com/unicode-org/cldr/release-44-1/common/supplemental/windowsZones.xml');
$doc = new DOMDocument();
if (!$doc->loadXML($xml)) {
throw new RuntimeException('Failed to load xml');
}
return $doc;
}
function sortTimeZoneIdentifiers(string $timeZoneA, string $timeZoneB): int
{
$matchesA = [];
$matchesB = [];
preg_match('/^(?<pre>.*?)(?<num>[+\-]?\d+)(?<post>.*?)$/', $timeZoneA, $matchesA);
if ($matchesA === []) {
preg_match('/^(?<pre>.*?)(?<num>[+\-]?\d+)(?<post>.*?)$/', $timeZoneA . '+0', $matchesA);
}
preg_match('/^(?<pre>.*?)(?<num>[+\-]?\d+)(?<post>.*?)$/', $timeZoneB, $matchesB);
if ($matchesB === []) {
preg_match('/^(?<pre>.*?)(?<num>[+\-]?\d+)(?<post>.*?)$/', $timeZoneB . '+0', $matchesB);
}
if ($matchesA['pre'] === $matchesB['pre'] && $matchesA['post'] === $matchesB['post']) {
return (int) $matchesA['num'] - (int) $matchesB['num'];
}
return strcasecmp($timeZoneA, $timeZoneB);
}
function normalizePhpTimeZoneID(string $timeZoneIdentifier): string
{
set_error_handler(static function() {}, -1);
try {
$timeZone = timezone_open($timeZoneIdentifier);
} finally {
restore_error_handler();
}
return $timeZone instanceof DateTimeZone ? $timeZone->getName() : '';
}
function buildWindowsToPhp(DOMDocument $doc): array
{
$xpath = new DOMXPath($doc);
$mapZones = $xpath->query('/supplementalData/windowsZones/mapTimezones/mapZone');
$map = [];
foreach ($mapZones as $mapZone) {
$windowsName = (string) $mapZone->getAttribute('other');
if ($windowsName === '') {
throw new RuntimeException('Failed to retrieve Windows time zone from XML ' . $doc->saveXML($mapZone));
}
if (!isset($map[$windowsName])) {
$map[$windowsName] = [];
}
$phpNames = (string) $mapZone->getAttribute('type');
if ($phpNames === '') {
throw new RuntimeException('Failed to retrieve PHP time zones from ' . $doc->saveXML($phpNames));
}
foreach (array_unique(preg_split('/\s+/', $phpNames, -1, PREG_SPLIT_NO_EMPTY)) as $phpName) {
$actualPhpName = normalizePhpTimeZoneID($phpName);
if ($actualPhpName === '') {
fwrite(STDERR, "Invalid PHP time zone name: '{$phpName}'\n");
} elseif (!in_array($actualPhpName, $map[$windowsName], true)) {
$map[$windowsName][] = $actualPhpName;
}
}
}
foreach ($map as $windowsName => $phpNames) {
if ($phpNames === []) {
throw new RuntimeException("No PHP time zone is applicable to the Windows time zone '{$windowsName}'");
}
}
uksort($map, 'sortTimeZoneIdentifiers');
return array_map(
static function (array $phpNames): array {
usort($phpNames, 'sortTimeZoneIdentifiers');
return $phpNames;
},
$map
);
}
function buildPhpToWindows(array $windowsToPhp): array
{
$map = [];
foreach ($windowsToPhp as $windows => $phpNames) {
foreach ($phpNames as $phpName) {
if (isset($map[$phpName])) {
throw new RuntimeException("The PHP time zone '{$phpName}' is applicable to more than one Windows time zone");
}
$map[$phpName] = $windows;
}
}
uksort($map, 'sortTimeZoneIdentifiers');
return $map;
}
function quote(string $s): string
{
return "'" . addcslashes($s, "'\\") . "'";
}
$doc = getXMLDocument();
$windowsToPhp = buildWindowsToPhp($doc);
$phpToWindows = buildPhpToWindows($windowsToPhp);
echo "const WINDOWS_TO_PHP = [\n";
foreach ($windowsToPhp as $windows => $phps) {
echo ' ', quote($windows), ' => [' . implode(', ', array_map('quote', $phps)), '],', "\n";
}
echo "\n";
echo "const PHP_TO_WINDOWS = [\n";
foreach ($phpToWindows as $php => $windows) {
echo ' ', quote($php), ' => ', quote($windows), ",\n";
}
echo "];\n";
echo "\n";
echo "const PHP_TO_WINDOWS = [\n";
foreach ($phpToWindows as $php => $windows) {
echo ' ', quote($php), ' => ', quote($windows), ",\n";
}
echo "];\n";
@mlocati
Copy link
Author

mlocati commented Apr 9, 2024

Output:

const WINDOWS_TO_PHP = [
    'Afghanistan Standard Time' => ['Asia/Kabul'],
    'Alaskan Standard Time' => ['America/Anchorage', 'America/Juneau', 'America/Metlakatla', 'America/Nome', 'America/Sitka', 'America/Yakutat'],
    'Aleutian Standard Time' => ['America/Adak'],
    'Altai Standard Time' => ['Asia/Barnaul'],
    'Arab Standard Time' => ['Asia/Aden', 'Asia/Bahrain', 'Asia/Kuwait', 'Asia/Qatar', 'Asia/Riyadh'],
    'Arabian Standard Time' => ['Asia/Dubai', 'Asia/Muscat', 'Etc/GMT-4'],
    'Arabic Standard Time' => ['Asia/Baghdad'],
    'Argentina Standard Time' => ['America/Argentina/La_Rioja', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Buenos_Aires', 'America/Catamarca', 'America/Cordoba', 'America/Jujuy', 'America/Mendoza'],
    'Astrakhan Standard Time' => ['Europe/Astrakhan', 'Europe/Ulyanovsk'],
    'Atlantic Standard Time' => ['America/Glace_Bay', 'America/Goose_Bay', 'America/Halifax', 'America/Moncton', 'America/Thule', 'Atlantic/Bermuda'],
    'AUS Central Standard Time' => ['Australia/Darwin'],
    'Aus Central W. Standard Time' => ['Australia/Eucla'],
    'AUS Eastern Standard Time' => ['Australia/Melbourne', 'Australia/Sydney'],
    'Azerbaijan Standard Time' => ['Asia/Baku'],
    'Azores Standard Time' => ['America/Scoresbysund', 'Atlantic/Azores'],
    'Bahia Standard Time' => ['America/Bahia'],
    'Bangladesh Standard Time' => ['Asia/Dhaka', 'Asia/Thimphu'],
    'Belarus Standard Time' => ['Europe/Minsk'],
    'Bougainville Standard Time' => ['Pacific/Bougainville'],
    'Canada Central Standard Time' => ['America/Regina', 'America/Swift_Current'],
    'Cape Verde Standard Time' => ['Atlantic/Cape_Verde', 'Etc/GMT+1'],
    'Caucasus Standard Time' => ['Asia/Yerevan'],
    'Cen. Australia Standard Time' => ['Australia/Adelaide', 'Australia/Broken_Hill'],
    'Central America Standard Time' => ['America/Belize', 'America/Costa_Rica', 'America/El_Salvador', 'America/Guatemala', 'America/Managua', 'America/Tegucigalpa', 'Etc/GMT+6', 'Pacific/Galapagos'],
    'Central Asia Standard Time' => ['Antarctica/Vostok', 'Asia/Almaty', 'Asia/Bishkek', 'Asia/Qostanay', 'Asia/Urumqi', 'Etc/GMT-6', 'Indian/Chagos'],
    'Central Brazilian Standard Time' => ['America/Campo_Grande', 'America/Cuiaba'],
    'Central Europe Standard Time' => ['Europe/Belgrade', 'Europe/Bratislava', 'Europe/Budapest', 'Europe/Ljubljana', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Tirane'],
    'Central European Standard Time' => ['Europe/Sarajevo', 'Europe/Skopje', 'Europe/Warsaw', 'Europe/Zagreb'],
    'Central Pacific Standard Time' => ['Antarctica/Casey', 'Etc/GMT-11', 'Pacific/Efate', 'Pacific/Guadalcanal', 'Pacific/Kosrae', 'Pacific/Noumea', 'Pacific/Ponape'],
    'Central Standard Time' => ['America/Chicago', 'America/Indiana/Knox', 'America/Indiana/Tell_City', 'America/Matamoros', 'America/Menominee', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Resolute', 'America/Winnipeg', 'CST6CDT'],
    'Central Standard Time (Mexico)' => ['America/Bahia_Banderas', 'America/Chihuahua', 'America/Merida', 'America/Mexico_City', 'America/Monterrey'],
    'Chatham Islands Standard Time' => ['Pacific/Chatham'],
    'China Standard Time' => ['Asia/Hong_Kong', 'Asia/Macau', 'Asia/Shanghai'],
    'Cuba Standard Time' => ['America/Havana'],
    'Dateline Standard Time' => ['Etc/GMT+12'],
    'E. Africa Standard Time' => ['Africa/Addis_Ababa', 'Africa/Asmera', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Kampala', 'Africa/Mogadishu', 'Africa/Nairobi', 'Antarctica/Syowa', 'Etc/GMT-3', 'Indian/Antananarivo', 'Indian/Comoro', 'Indian/Mayotte'],
    'E. Australia Standard Time' => ['Australia/Brisbane', 'Australia/Lindeman'],
    'E. Europe Standard Time' => ['Europe/Chisinau'],
    'E. South America Standard Time' => ['America/Sao_Paulo'],
    'Easter Island Standard Time' => ['Pacific/Easter'],
    'Eastern Standard Time' => ['America/Detroit', 'America/Indiana/Petersburg', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Iqaluit', 'America/Kentucky/Monticello', 'America/Louisville', 'America/Montreal', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Pangnirtung', 'America/Thunder_Bay', 'America/Toronto', 'EST5EDT'],
    'Eastern Standard Time (Mexico)' => ['America/Cancun'],
    'Egypt Standard Time' => ['Africa/Cairo'],
    'Ekaterinburg Standard Time' => ['Asia/Yekaterinburg'],
    'Fiji Standard Time' => ['Pacific/Fiji'],
    'FLE Standard Time' => ['Europe/Helsinki', 'Europe/Kiev', 'Europe/Mariehamn', 'Europe/Riga', 'Europe/Sofia', 'Europe/Tallinn', 'Europe/Uzhgorod', 'Europe/Vilnius', 'Europe/Zaporozhye'],
    'Georgian Standard Time' => ['Asia/Tbilisi'],
    'GMT Standard Time' => ['Atlantic/Canary', 'Atlantic/Faeroe', 'Atlantic/Madeira', 'Europe/Dublin', 'Europe/Guernsey', 'Europe/Isle_of_Man', 'Europe/Jersey', 'Europe/Lisbon', 'Europe/London'],
    'Greenland Standard Time' => ['America/Godthab'],
    'Greenwich Standard Time' => ['Africa/Abidjan', 'Africa/Accra', 'Africa/Bamako', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Freetown', 'Africa/Lome', 'Africa/Monrovia', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'America/Danmarkshavn', 'Atlantic/Reykjavik', 'Atlantic/St_Helena'],
    'GTB Standard Time' => ['Asia/Famagusta', 'Asia/Nicosia', 'Europe/Athens', 'Europe/Bucharest'],
    'Haiti Standard Time' => ['America/Port-au-Prince'],
    'Hawaiian Standard Time' => ['Etc/GMT+10', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Rarotonga', 'Pacific/Tahiti'],
    'India Standard Time' => ['Asia/Calcutta'],
    'Iran Standard Time' => ['Asia/Tehran'],
    'Israel Standard Time' => ['Asia/Jerusalem'],
    'Jordan Standard Time' => ['Asia/Amman'],
    'Kaliningrad Standard Time' => ['Europe/Kaliningrad'],
    'Korea Standard Time' => ['Asia/Seoul'],
    'Libya Standard Time' => ['Africa/Tripoli'],
    'Line Islands Standard Time' => ['Etc/GMT-14', 'Pacific/Kiritimati'],
    'Lord Howe Standard Time' => ['Australia/Lord_Howe'],
    'Magadan Standard Time' => ['Asia/Magadan'],
    'Magallanes Standard Time' => ['America/Punta_Arenas'],
    'Marquesas Standard Time' => ['Pacific/Marquesas'],
    'Mauritius Standard Time' => ['Indian/Mahe', 'Indian/Mauritius', 'Indian/Reunion'],
    'Middle East Standard Time' => ['Asia/Beirut'],
    'Montevideo Standard Time' => ['America/Montevideo'],
    'Morocco Standard Time' => ['Africa/Casablanca', 'Africa/El_Aaiun'],
    'Mountain Standard Time' => ['America/Boise', 'America/Cambridge_Bay', 'America/Ciudad_Juarez', 'America/Denver', 'America/Edmonton', 'America/Inuvik', 'America/Yellowknife', 'MST7MDT'],
    'Mountain Standard Time (Mexico)' => ['America/Mazatlan'],
    'Myanmar Standard Time' => ['Asia/Rangoon', 'Indian/Cocos'],
    'N. Central Asia Standard Time' => ['Asia/Novosibirsk'],
    'Namibia Standard Time' => ['Africa/Windhoek'],
    'Nepal Standard Time' => ['Asia/Katmandu'],
    'New Zealand Standard Time' => ['Antarctica/McMurdo', 'Pacific/Auckland'],
    'Newfoundland Standard Time' => ['America/St_Johns'],
    'Norfolk Standard Time' => ['Pacific/Norfolk'],
    'North Asia East Standard Time' => ['Asia/Irkutsk'],
    'North Asia Standard Time' => ['Asia/Krasnoyarsk', 'Asia/Novokuznetsk'],
    'North Korea Standard Time' => ['Asia/Pyongyang'],
    'Omsk Standard Time' => ['Asia/Omsk'],
    'Pacific SA Standard Time' => ['America/Santiago'],
    'Pacific Standard Time' => ['America/Los_Angeles', 'America/Vancouver', 'PST8PDT'],
    'Pacific Standard Time (Mexico)' => ['America/Santa_Isabel', 'America/Tijuana'],
    'Pakistan Standard Time' => ['Asia/Karachi'],
    'Paraguay Standard Time' => ['America/Asuncion'],
    'Qyzylorda Standard Time' => ['Asia/Qyzylorda'],
    'Romance Standard Time' => ['Africa/Ceuta', 'Europe/Brussels', 'Europe/Copenhagen', 'Europe/Madrid', 'Europe/Paris'],
    'Russia Time Zone 3' => ['Europe/Samara'],
    'Russia Time Zone 10' => ['Asia/Srednekolymsk'],
    'Russia Time Zone 11' => ['Asia/Anadyr', 'Asia/Kamchatka'],
    'Russian Standard Time' => ['Europe/Kirov', 'Europe/Moscow', 'Europe/Simferopol'],
    'SA Eastern Standard Time' => ['America/Belem', 'America/Cayenne', 'America/Fortaleza', 'America/Maceio', 'America/Paramaribo', 'America/Recife', 'America/Santarem', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Atlantic/Stanley', 'Etc/GMT+3'],
    'SA Pacific Standard Time' => ['America/Bogota', 'America/Cayman', 'America/Coral_Harbour', 'America/Eirunepe', 'America/Guayaquil', 'America/Jamaica', 'America/Lima', 'America/Panama', 'America/Rio_Branco', 'Etc/GMT+5'],
    'SA Western Standard Time' => ['America/Anguilla', 'America/Antigua', 'America/Aruba', 'America/Barbados', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Curacao', 'America/Dominica', 'America/Grenada', 'America/Guadeloupe', 'America/Guyana', 'America/Kralendijk', 'America/La_Paz', 'America/Lower_Princes', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Montserrat', 'America/Port_of_Spain', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Santo_Domingo', 'America/St_Barthelemy', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Tortola', 'Etc/GMT+4'],
    'Saint Pierre Standard Time' => ['America/Miquelon'],
    'Sakhalin Standard Time' => ['Asia/Sakhalin'],
    'Samoa Standard Time' => ['Pacific/Apia'],
    'Sao Tome Standard Time' => ['Africa/Sao_Tome'],
    'Saratov Standard Time' => ['Europe/Saratov'],
    'SE Asia Standard Time' => ['Antarctica/Davis', 'Asia/Bangkok', 'Asia/Jakarta', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Saigon', 'Asia/Vientiane', 'Etc/GMT-7', 'Indian/Christmas'],
    'Singapore Standard Time' => ['Asia/Brunei', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Makassar', 'Asia/Manila', 'Asia/Singapore', 'Etc/GMT-8'],
    'South Africa Standard Time' => ['Africa/Blantyre', 'Africa/Bujumbura', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Kigali', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Etc/GMT-2'],
    'South Sudan Standard Time' => ['Africa/Juba'],
    'Sri Lanka Standard Time' => ['Asia/Colombo'],
    'Sudan Standard Time' => ['Africa/Khartoum'],
    'Syria Standard Time' => ['Asia/Damascus'],
    'Taipei Standard Time' => ['Asia/Taipei'],
    'Tasmania Standard Time' => ['Antarctica/Macquarie', 'Australia/Currie', 'Australia/Hobart'],
    'Tocantins Standard Time' => ['America/Araguaina'],
    'Tokyo Standard Time' => ['Asia/Dili', 'Asia/Jayapura', 'Asia/Tokyo', 'Etc/GMT-9', 'Pacific/Palau'],
    'Tomsk Standard Time' => ['Asia/Tomsk'],
    'Tonga Standard Time' => ['Pacific/Tongatapu'],
    'Transbaikal Standard Time' => ['Asia/Chita'],
    'Turkey Standard Time' => ['Europe/Istanbul'],
    'Turks And Caicos Standard Time' => ['America/Grand_Turk'],
    'Ulaanbaatar Standard Time' => ['Asia/Choibalsan', 'Asia/Ulaanbaatar'],
    'US Eastern Standard Time' => ['America/Indiana/Marengo', 'America/Indiana/Vevay', 'America/Indianapolis'],
    'US Mountain Standard Time' => ['America/Creston', 'America/Dawson_Creek', 'America/Fort_Nelson', 'America/Hermosillo', 'America/Phoenix', 'Etc/GMT+7'],
    'UTC-11' => ['Etc/GMT+11', 'Pacific/Midway', 'Pacific/Niue', 'Pacific/Pago_Pago'],
    'UTC-09' => ['Etc/GMT+9', 'Pacific/Gambier'],
    'UTC-08' => ['Etc/GMT+8', 'Pacific/Pitcairn'],
    'UTC-02' => ['America/Noronha', 'Atlantic/South_Georgia', 'Etc/GMT+2'],
    'UTC' => ['Etc/GMT', 'Etc/UTC'],
    'UTC+12' => ['Etc/GMT-12', 'Pacific/Funafuti', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Nauru', 'Pacific/Tarawa', 'Pacific/Wake', 'Pacific/Wallis'],
    'UTC+13' => ['Etc/GMT-13', 'Pacific/Enderbury', 'Pacific/Fakaofo'],
    'Venezuela Standard Time' => ['America/Caracas'],
    'Vladivostok Standard Time' => ['Asia/Ust-Nera', 'Asia/Vladivostok'],
    'Volgograd Standard Time' => ['Europe/Volgograd'],
    'W. Australia Standard Time' => ['Australia/Perth'],
    'W. Central Africa Standard Time' => ['Africa/Algiers', 'Africa/Bangui', 'Africa/Brazzaville', 'Africa/Douala', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Luanda', 'Africa/Malabo', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Porto-Novo', 'Africa/Tunis', 'Etc/GMT-1'],
    'W. Europe Standard Time' => ['Arctic/Longyearbyen', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Berlin', 'Europe/Busingen', 'Europe/Gibraltar', 'Europe/Luxembourg', 'Europe/Malta', 'Europe/Monaco', 'Europe/Oslo', 'Europe/Rome', 'Europe/San_Marino', 'Europe/Stockholm', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Zurich'],
    'W. Mongolia Standard Time' => ['Asia/Hovd'],
    'West Asia Standard Time' => ['Antarctica/Mawson', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Atyrau', 'Asia/Dushanbe', 'Asia/Oral', 'Asia/Samarkand', 'Asia/Tashkent', 'Etc/GMT-5', 'Indian/Kerguelen', 'Indian/Maldives'],
    'West Bank Standard Time' => ['Asia/Gaza', 'Asia/Hebron'],
    'West Pacific Standard Time' => ['Antarctica/DumontDUrville', 'Etc/GMT-10', 'Pacific/Guam', 'Pacific/Port_Moresby', 'Pacific/Saipan', 'Pacific/Truk'],
    'Yakutsk Standard Time' => ['Asia/Khandyga', 'Asia/Yakutsk'],
    'Yukon Standard Time' => ['America/Dawson', 'America/Whitehorse'],
];

const PHP_TO_WINDOWS = [
    'Africa/Abidjan' => 'Greenwich Standard Time',
    'Africa/Accra' => 'Greenwich Standard Time',
    'Africa/Addis_Ababa' => 'E. Africa Standard Time',
    'Africa/Algiers' => 'W. Central Africa Standard Time',
    'Africa/Asmera' => 'E. Africa Standard Time',
    'Africa/Bamako' => 'Greenwich Standard Time',
    'Africa/Bangui' => 'W. Central Africa Standard Time',
    'Africa/Banjul' => 'Greenwich Standard Time',
    'Africa/Bissau' => 'Greenwich Standard Time',
    'Africa/Blantyre' => 'South Africa Standard Time',
    'Africa/Brazzaville' => 'W. Central Africa Standard Time',
    'Africa/Bujumbura' => 'South Africa Standard Time',
    'Africa/Cairo' => 'Egypt Standard Time',
    'Africa/Casablanca' => 'Morocco Standard Time',
    'Africa/Ceuta' => 'Romance Standard Time',
    'Africa/Conakry' => 'Greenwich Standard Time',
    'Africa/Dakar' => 'Greenwich Standard Time',
    'Africa/Dar_es_Salaam' => 'E. Africa Standard Time',
    'Africa/Djibouti' => 'E. Africa Standard Time',
    'Africa/Douala' => 'W. Central Africa Standard Time',
    'Africa/El_Aaiun' => 'Morocco Standard Time',
    'Africa/Freetown' => 'Greenwich Standard Time',
    'Africa/Gaborone' => 'South Africa Standard Time',
    'Africa/Harare' => 'South Africa Standard Time',
    'Africa/Johannesburg' => 'South Africa Standard Time',
    'Africa/Juba' => 'South Sudan Standard Time',
    'Africa/Kampala' => 'E. Africa Standard Time',
    'Africa/Khartoum' => 'Sudan Standard Time',
    'Africa/Kigali' => 'South Africa Standard Time',
    'Africa/Kinshasa' => 'W. Central Africa Standard Time',
    'Africa/Lagos' => 'W. Central Africa Standard Time',
    'Africa/Libreville' => 'W. Central Africa Standard Time',
    'Africa/Lome' => 'Greenwich Standard Time',
    'Africa/Luanda' => 'W. Central Africa Standard Time',
    'Africa/Lubumbashi' => 'South Africa Standard Time',
    'Africa/Lusaka' => 'South Africa Standard Time',
    'Africa/Malabo' => 'W. Central Africa Standard Time',
    'Africa/Maputo' => 'South Africa Standard Time',
    'Africa/Maseru' => 'South Africa Standard Time',
    'Africa/Mbabane' => 'South Africa Standard Time',
    'Africa/Mogadishu' => 'E. Africa Standard Time',
    'Africa/Monrovia' => 'Greenwich Standard Time',
    'Africa/Nairobi' => 'E. Africa Standard Time',
    'Africa/Ndjamena' => 'W. Central Africa Standard Time',
    'Africa/Niamey' => 'W. Central Africa Standard Time',
    'Africa/Nouakchott' => 'Greenwich Standard Time',
    'Africa/Ouagadougou' => 'Greenwich Standard Time',
    'Africa/Porto-Novo' => 'W. Central Africa Standard Time',
    'Africa/Sao_Tome' => 'Sao Tome Standard Time',
    'Africa/Tripoli' => 'Libya Standard Time',
    'Africa/Tunis' => 'W. Central Africa Standard Time',
    'Africa/Windhoek' => 'Namibia Standard Time',
    'America/Adak' => 'Aleutian Standard Time',
    'America/Anchorage' => 'Alaskan Standard Time',
    'America/Anguilla' => 'SA Western Standard Time',
    'America/Antigua' => 'SA Western Standard Time',
    'America/Araguaina' => 'Tocantins Standard Time',
    'America/Argentina/La_Rioja' => 'Argentina Standard Time',
    'America/Argentina/Rio_Gallegos' => 'Argentina Standard Time',
    'America/Argentina/Salta' => 'Argentina Standard Time',
    'America/Argentina/San_Juan' => 'Argentina Standard Time',
    'America/Argentina/San_Luis' => 'Argentina Standard Time',
    'America/Argentina/Tucuman' => 'Argentina Standard Time',
    'America/Argentina/Ushuaia' => 'Argentina Standard Time',
    'America/Aruba' => 'SA Western Standard Time',
    'America/Asuncion' => 'Paraguay Standard Time',
    'America/Bahia' => 'Bahia Standard Time',
    'America/Bahia_Banderas' => 'Central Standard Time (Mexico)',
    'America/Barbados' => 'SA Western Standard Time',
    'America/Belem' => 'SA Eastern Standard Time',
    'America/Belize' => 'Central America Standard Time',
    'America/Blanc-Sablon' => 'SA Western Standard Time',
    'America/Boa_Vista' => 'SA Western Standard Time',
    'America/Bogota' => 'SA Pacific Standard Time',
    'America/Boise' => 'Mountain Standard Time',
    'America/Buenos_Aires' => 'Argentina Standard Time',
    'America/Cambridge_Bay' => 'Mountain Standard Time',
    'America/Campo_Grande' => 'Central Brazilian Standard Time',
    'America/Cancun' => 'Eastern Standard Time (Mexico)',
    'America/Caracas' => 'Venezuela Standard Time',
    'America/Catamarca' => 'Argentina Standard Time',
    'America/Cayenne' => 'SA Eastern Standard Time',
    'America/Cayman' => 'SA Pacific Standard Time',
    'America/Chicago' => 'Central Standard Time',
    'America/Chihuahua' => 'Central Standard Time (Mexico)',
    'America/Ciudad_Juarez' => 'Mountain Standard Time',
    'America/Coral_Harbour' => 'SA Pacific Standard Time',
    'America/Cordoba' => 'Argentina Standard Time',
    'America/Costa_Rica' => 'Central America Standard Time',
    'America/Creston' => 'US Mountain Standard Time',
    'America/Cuiaba' => 'Central Brazilian Standard Time',
    'America/Curacao' => 'SA Western Standard Time',
    'America/Danmarkshavn' => 'Greenwich Standard Time',
    'America/Dawson' => 'Yukon Standard Time',
    'America/Dawson_Creek' => 'US Mountain Standard Time',
    'America/Denver' => 'Mountain Standard Time',
    'America/Detroit' => 'Eastern Standard Time',
    'America/Dominica' => 'SA Western Standard Time',
    'America/Edmonton' => 'Mountain Standard Time',
    'America/Eirunepe' => 'SA Pacific Standard Time',
    'America/El_Salvador' => 'Central America Standard Time',
    'America/Fort_Nelson' => 'US Mountain Standard Time',
    'America/Fortaleza' => 'SA Eastern Standard Time',
    'America/Glace_Bay' => 'Atlantic Standard Time',
    'America/Godthab' => 'Greenland Standard Time',
    'America/Goose_Bay' => 'Atlantic Standard Time',
    'America/Grand_Turk' => 'Turks And Caicos Standard Time',
    'America/Grenada' => 'SA Western Standard Time',
    'America/Guadeloupe' => 'SA Western Standard Time',
    'America/Guatemala' => 'Central America Standard Time',
    'America/Guayaquil' => 'SA Pacific Standard Time',
    'America/Guyana' => 'SA Western Standard Time',
    'America/Halifax' => 'Atlantic Standard Time',
    'America/Havana' => 'Cuba Standard Time',
    'America/Hermosillo' => 'US Mountain Standard Time',
    'America/Indiana/Knox' => 'Central Standard Time',
    'America/Indiana/Marengo' => 'US Eastern Standard Time',
    'America/Indiana/Petersburg' => 'Eastern Standard Time',
    'America/Indiana/Tell_City' => 'Central Standard Time',
    'America/Indiana/Vevay' => 'US Eastern Standard Time',
    'America/Indiana/Vincennes' => 'Eastern Standard Time',
    'America/Indiana/Winamac' => 'Eastern Standard Time',
    'America/Indianapolis' => 'US Eastern Standard Time',
    'America/Inuvik' => 'Mountain Standard Time',
    'America/Iqaluit' => 'Eastern Standard Time',
    'America/Jamaica' => 'SA Pacific Standard Time',
    'America/Jujuy' => 'Argentina Standard Time',
    'America/Juneau' => 'Alaskan Standard Time',
    'America/Kentucky/Monticello' => 'Eastern Standard Time',
    'America/Kralendijk' => 'SA Western Standard Time',
    'America/La_Paz' => 'SA Western Standard Time',
    'America/Lima' => 'SA Pacific Standard Time',
    'America/Los_Angeles' => 'Pacific Standard Time',
    'America/Louisville' => 'Eastern Standard Time',
    'America/Lower_Princes' => 'SA Western Standard Time',
    'America/Maceio' => 'SA Eastern Standard Time',
    'America/Managua' => 'Central America Standard Time',
    'America/Manaus' => 'SA Western Standard Time',
    'America/Marigot' => 'SA Western Standard Time',
    'America/Martinique' => 'SA Western Standard Time',
    'America/Matamoros' => 'Central Standard Time',
    'America/Mazatlan' => 'Mountain Standard Time (Mexico)',
    'America/Mendoza' => 'Argentina Standard Time',
    'America/Menominee' => 'Central Standard Time',
    'America/Merida' => 'Central Standard Time (Mexico)',
    'America/Metlakatla' => 'Alaskan Standard Time',
    'America/Mexico_City' => 'Central Standard Time (Mexico)',
    'America/Miquelon' => 'Saint Pierre Standard Time',
    'America/Moncton' => 'Atlantic Standard Time',
    'America/Monterrey' => 'Central Standard Time (Mexico)',
    'America/Montevideo' => 'Montevideo Standard Time',
    'America/Montreal' => 'Eastern Standard Time',
    'America/Montserrat' => 'SA Western Standard Time',
    'America/Nassau' => 'Eastern Standard Time',
    'America/New_York' => 'Eastern Standard Time',
    'America/Nipigon' => 'Eastern Standard Time',
    'America/Nome' => 'Alaskan Standard Time',
    'America/Noronha' => 'UTC-02',
    'America/North_Dakota/Beulah' => 'Central Standard Time',
    'America/North_Dakota/Center' => 'Central Standard Time',
    'America/North_Dakota/New_Salem' => 'Central Standard Time',
    'America/Ojinaga' => 'Central Standard Time',
    'America/Panama' => 'SA Pacific Standard Time',
    'America/Pangnirtung' => 'Eastern Standard Time',
    'America/Paramaribo' => 'SA Eastern Standard Time',
    'America/Phoenix' => 'US Mountain Standard Time',
    'America/Port-au-Prince' => 'Haiti Standard Time',
    'America/Port_of_Spain' => 'SA Western Standard Time',
    'America/Porto_Velho' => 'SA Western Standard Time',
    'America/Puerto_Rico' => 'SA Western Standard Time',
    'America/Punta_Arenas' => 'Magallanes Standard Time',
    'America/Rainy_River' => 'Central Standard Time',
    'America/Rankin_Inlet' => 'Central Standard Time',
    'America/Recife' => 'SA Eastern Standard Time',
    'America/Regina' => 'Canada Central Standard Time',
    'America/Resolute' => 'Central Standard Time',
    'America/Rio_Branco' => 'SA Pacific Standard Time',
    'America/Santa_Isabel' => 'Pacific Standard Time (Mexico)',
    'America/Santarem' => 'SA Eastern Standard Time',
    'America/Santiago' => 'Pacific SA Standard Time',
    'America/Santo_Domingo' => 'SA Western Standard Time',
    'America/Sao_Paulo' => 'E. South America Standard Time',
    'America/Scoresbysund' => 'Azores Standard Time',
    'America/Sitka' => 'Alaskan Standard Time',
    'America/St_Barthelemy' => 'SA Western Standard Time',
    'America/St_Johns' => 'Newfoundland Standard Time',
    'America/St_Kitts' => 'SA Western Standard Time',
    'America/St_Lucia' => 'SA Western Standard Time',
    'America/St_Thomas' => 'SA Western Standard Time',
    'America/St_Vincent' => 'SA Western Standard Time',
    'America/Swift_Current' => 'Canada Central Standard Time',
    'America/Tegucigalpa' => 'Central America Standard Time',
    'America/Thule' => 'Atlantic Standard Time',
    'America/Thunder_Bay' => 'Eastern Standard Time',
    'America/Tijuana' => 'Pacific Standard Time (Mexico)',
    'America/Toronto' => 'Eastern Standard Time',
    'America/Tortola' => 'SA Western Standard Time',
    'America/Vancouver' => 'Pacific Standard Time',
    'America/Whitehorse' => 'Yukon Standard Time',
    'America/Winnipeg' => 'Central Standard Time',
    'America/Yakutat' => 'Alaskan Standard Time',
    'America/Yellowknife' => 'Mountain Standard Time',
    'Antarctica/Casey' => 'Central Pacific Standard Time',
    'Antarctica/Davis' => 'SE Asia Standard Time',
    'Antarctica/DumontDUrville' => 'West Pacific Standard Time',
    'Antarctica/Macquarie' => 'Tasmania Standard Time',
    'Antarctica/Mawson' => 'West Asia Standard Time',
    'Antarctica/McMurdo' => 'New Zealand Standard Time',
    'Antarctica/Palmer' => 'SA Eastern Standard Time',
    'Antarctica/Rothera' => 'SA Eastern Standard Time',
    'Antarctica/Syowa' => 'E. Africa Standard Time',
    'Antarctica/Vostok' => 'Central Asia Standard Time',
    'Arctic/Longyearbyen' => 'W. Europe Standard Time',
    'Asia/Aden' => 'Arab Standard Time',
    'Asia/Almaty' => 'Central Asia Standard Time',
    'Asia/Amman' => 'Jordan Standard Time',
    'Asia/Anadyr' => 'Russia Time Zone 11',
    'Asia/Aqtau' => 'West Asia Standard Time',
    'Asia/Aqtobe' => 'West Asia Standard Time',
    'Asia/Ashgabat' => 'West Asia Standard Time',
    'Asia/Atyrau' => 'West Asia Standard Time',
    'Asia/Baghdad' => 'Arabic Standard Time',
    'Asia/Bahrain' => 'Arab Standard Time',
    'Asia/Baku' => 'Azerbaijan Standard Time',
    'Asia/Bangkok' => 'SE Asia Standard Time',
    'Asia/Barnaul' => 'Altai Standard Time',
    'Asia/Beirut' => 'Middle East Standard Time',
    'Asia/Bishkek' => 'Central Asia Standard Time',
    'Asia/Brunei' => 'Singapore Standard Time',
    'Asia/Calcutta' => 'India Standard Time',
    'Asia/Chita' => 'Transbaikal Standard Time',
    'Asia/Choibalsan' => 'Ulaanbaatar Standard Time',
    'Asia/Colombo' => 'Sri Lanka Standard Time',
    'Asia/Damascus' => 'Syria Standard Time',
    'Asia/Dhaka' => 'Bangladesh Standard Time',
    'Asia/Dili' => 'Tokyo Standard Time',
    'Asia/Dubai' => 'Arabian Standard Time',
    'Asia/Dushanbe' => 'West Asia Standard Time',
    'Asia/Famagusta' => 'GTB Standard Time',
    'Asia/Gaza' => 'West Bank Standard Time',
    'Asia/Hebron' => 'West Bank Standard Time',
    'Asia/Hong_Kong' => 'China Standard Time',
    'Asia/Hovd' => 'W. Mongolia Standard Time',
    'Asia/Irkutsk' => 'North Asia East Standard Time',
    'Asia/Jakarta' => 'SE Asia Standard Time',
    'Asia/Jayapura' => 'Tokyo Standard Time',
    'Asia/Jerusalem' => 'Israel Standard Time',
    'Asia/Kabul' => 'Afghanistan Standard Time',
    'Asia/Kamchatka' => 'Russia Time Zone 11',
    'Asia/Karachi' => 'Pakistan Standard Time',
    'Asia/Katmandu' => 'Nepal Standard Time',
    'Asia/Khandyga' => 'Yakutsk Standard Time',
    'Asia/Krasnoyarsk' => 'North Asia Standard Time',
    'Asia/Kuala_Lumpur' => 'Singapore Standard Time',
    'Asia/Kuching' => 'Singapore Standard Time',
    'Asia/Kuwait' => 'Arab Standard Time',
    'Asia/Macau' => 'China Standard Time',
    'Asia/Magadan' => 'Magadan Standard Time',
    'Asia/Makassar' => 'Singapore Standard Time',
    'Asia/Manila' => 'Singapore Standard Time',
    'Asia/Muscat' => 'Arabian Standard Time',
    'Asia/Nicosia' => 'GTB Standard Time',
    'Asia/Novokuznetsk' => 'North Asia Standard Time',
    'Asia/Novosibirsk' => 'N. Central Asia Standard Time',
    'Asia/Omsk' => 'Omsk Standard Time',
    'Asia/Oral' => 'West Asia Standard Time',
    'Asia/Phnom_Penh' => 'SE Asia Standard Time',
    'Asia/Pontianak' => 'SE Asia Standard Time',
    'Asia/Pyongyang' => 'North Korea Standard Time',
    'Asia/Qatar' => 'Arab Standard Time',
    'Asia/Qostanay' => 'Central Asia Standard Time',
    'Asia/Qyzylorda' => 'Qyzylorda Standard Time',
    'Asia/Rangoon' => 'Myanmar Standard Time',
    'Asia/Riyadh' => 'Arab Standard Time',
    'Asia/Saigon' => 'SE Asia Standard Time',
    'Asia/Sakhalin' => 'Sakhalin Standard Time',
    'Asia/Samarkand' => 'West Asia Standard Time',
    'Asia/Seoul' => 'Korea Standard Time',
    'Asia/Shanghai' => 'China Standard Time',
    'Asia/Singapore' => 'Singapore Standard Time',
    'Asia/Srednekolymsk' => 'Russia Time Zone 10',
    'Asia/Taipei' => 'Taipei Standard Time',
    'Asia/Tashkent' => 'West Asia Standard Time',
    'Asia/Tbilisi' => 'Georgian Standard Time',
    'Asia/Tehran' => 'Iran Standard Time',
    'Asia/Thimphu' => 'Bangladesh Standard Time',
    'Asia/Tokyo' => 'Tokyo Standard Time',
    'Asia/Tomsk' => 'Tomsk Standard Time',
    'Asia/Ulaanbaatar' => 'Ulaanbaatar Standard Time',
    'Asia/Urumqi' => 'Central Asia Standard Time',
    'Asia/Ust-Nera' => 'Vladivostok Standard Time',
    'Asia/Vientiane' => 'SE Asia Standard Time',
    'Asia/Vladivostok' => 'Vladivostok Standard Time',
    'Asia/Yakutsk' => 'Yakutsk Standard Time',
    'Asia/Yekaterinburg' => 'Ekaterinburg Standard Time',
    'Asia/Yerevan' => 'Caucasus Standard Time',
    'Atlantic/Azores' => 'Azores Standard Time',
    'Atlantic/Bermuda' => 'Atlantic Standard Time',
    'Atlantic/Canary' => 'GMT Standard Time',
    'Atlantic/Cape_Verde' => 'Cape Verde Standard Time',
    'Atlantic/Faeroe' => 'GMT Standard Time',
    'Atlantic/Madeira' => 'GMT Standard Time',
    'Atlantic/Reykjavik' => 'Greenwich Standard Time',
    'Atlantic/South_Georgia' => 'UTC-02',
    'Atlantic/St_Helena' => 'Greenwich Standard Time',
    'Atlantic/Stanley' => 'SA Eastern Standard Time',
    'Australia/Adelaide' => 'Cen. Australia Standard Time',
    'Australia/Brisbane' => 'E. Australia Standard Time',
    'Australia/Broken_Hill' => 'Cen. Australia Standard Time',
    'Australia/Currie' => 'Tasmania Standard Time',
    'Australia/Darwin' => 'AUS Central Standard Time',
    'Australia/Eucla' => 'Aus Central W. Standard Time',
    'Australia/Hobart' => 'Tasmania Standard Time',
    'Australia/Lindeman' => 'E. Australia Standard Time',
    'Australia/Lord_Howe' => 'Lord Howe Standard Time',
    'Australia/Melbourne' => 'AUS Eastern Standard Time',
    'Australia/Perth' => 'W. Australia Standard Time',
    'Australia/Sydney' => 'AUS Eastern Standard Time',
    'CST6CDT' => 'Central Standard Time',
    'EST5EDT' => 'Eastern Standard Time',
    'Etc/GMT-14' => 'Line Islands Standard Time',
    'Etc/GMT-13' => 'UTC+13',
    'Etc/GMT-12' => 'UTC+12',
    'Etc/GMT-11' => 'Central Pacific Standard Time',
    'Etc/GMT-10' => 'West Pacific Standard Time',
    'Etc/GMT-9' => 'Tokyo Standard Time',
    'Etc/GMT-8' => 'Singapore Standard Time',
    'Etc/GMT-7' => 'SE Asia Standard Time',
    'Etc/GMT-6' => 'Central Asia Standard Time',
    'Etc/GMT-5' => 'West Asia Standard Time',
    'Etc/GMT-4' => 'Arabian Standard Time',
    'Etc/GMT-3' => 'E. Africa Standard Time',
    'Etc/GMT-2' => 'South Africa Standard Time',
    'Etc/GMT-1' => 'W. Central Africa Standard Time',
    'Etc/GMT' => 'UTC',
    'Etc/GMT+1' => 'Cape Verde Standard Time',
    'Etc/GMT+2' => 'UTC-02',
    'Etc/GMT+3' => 'SA Eastern Standard Time',
    'Etc/GMT+4' => 'SA Western Standard Time',
    'Etc/GMT+5' => 'SA Pacific Standard Time',
    'Etc/GMT+6' => 'Central America Standard Time',
    'Etc/GMT+7' => 'US Mountain Standard Time',
    'Etc/GMT+8' => 'UTC-08',
    'Etc/GMT+9' => 'UTC-09',
    'Etc/GMT+10' => 'Hawaiian Standard Time',
    'Etc/GMT+11' => 'UTC-11',
    'Etc/GMT+12' => 'Dateline Standard Time',
    'Etc/UTC' => 'UTC',
    'Europe/Amsterdam' => 'W. Europe Standard Time',
    'Europe/Andorra' => 'W. Europe Standard Time',
    'Europe/Astrakhan' => 'Astrakhan Standard Time',
    'Europe/Athens' => 'GTB Standard Time',
    'Europe/Belgrade' => 'Central Europe Standard Time',
    'Europe/Berlin' => 'W. Europe Standard Time',
    'Europe/Bratislava' => 'Central Europe Standard Time',
    'Europe/Brussels' => 'Romance Standard Time',
    'Europe/Bucharest' => 'GTB Standard Time',
    'Europe/Budapest' => 'Central Europe Standard Time',
    'Europe/Busingen' => 'W. Europe Standard Time',
    'Europe/Chisinau' => 'E. Europe Standard Time',
    'Europe/Copenhagen' => 'Romance Standard Time',
    'Europe/Dublin' => 'GMT Standard Time',
    'Europe/Gibraltar' => 'W. Europe Standard Time',
    'Europe/Guernsey' => 'GMT Standard Time',
    'Europe/Helsinki' => 'FLE Standard Time',
    'Europe/Isle_of_Man' => 'GMT Standard Time',
    'Europe/Istanbul' => 'Turkey Standard Time',
    'Europe/Jersey' => 'GMT Standard Time',
    'Europe/Kaliningrad' => 'Kaliningrad Standard Time',
    'Europe/Kiev' => 'FLE Standard Time',
    'Europe/Kirov' => 'Russian Standard Time',
    'Europe/Lisbon' => 'GMT Standard Time',
    'Europe/Ljubljana' => 'Central Europe Standard Time',
    'Europe/London' => 'GMT Standard Time',
    'Europe/Luxembourg' => 'W. Europe Standard Time',
    'Europe/Madrid' => 'Romance Standard Time',
    'Europe/Malta' => 'W. Europe Standard Time',
    'Europe/Mariehamn' => 'FLE Standard Time',
    'Europe/Minsk' => 'Belarus Standard Time',
    'Europe/Monaco' => 'W. Europe Standard Time',
    'Europe/Moscow' => 'Russian Standard Time',
    'Europe/Oslo' => 'W. Europe Standard Time',
    'Europe/Paris' => 'Romance Standard Time',
    'Europe/Podgorica' => 'Central Europe Standard Time',
    'Europe/Prague' => 'Central Europe Standard Time',
    'Europe/Riga' => 'FLE Standard Time',
    'Europe/Rome' => 'W. Europe Standard Time',
    'Europe/Samara' => 'Russia Time Zone 3',
    'Europe/San_Marino' => 'W. Europe Standard Time',
    'Europe/Sarajevo' => 'Central European Standard Time',
    'Europe/Saratov' => 'Saratov Standard Time',
    'Europe/Simferopol' => 'Russian Standard Time',
    'Europe/Skopje' => 'Central European Standard Time',
    'Europe/Sofia' => 'FLE Standard Time',
    'Europe/Stockholm' => 'W. Europe Standard Time',
    'Europe/Tallinn' => 'FLE Standard Time',
    'Europe/Tirane' => 'Central Europe Standard Time',
    'Europe/Ulyanovsk' => 'Astrakhan Standard Time',
    'Europe/Uzhgorod' => 'FLE Standard Time',
    'Europe/Vaduz' => 'W. Europe Standard Time',
    'Europe/Vatican' => 'W. Europe Standard Time',
    'Europe/Vienna' => 'W. Europe Standard Time',
    'Europe/Vilnius' => 'FLE Standard Time',
    'Europe/Volgograd' => 'Volgograd Standard Time',
    'Europe/Warsaw' => 'Central European Standard Time',
    'Europe/Zagreb' => 'Central European Standard Time',
    'Europe/Zaporozhye' => 'FLE Standard Time',
    'Europe/Zurich' => 'W. Europe Standard Time',
    'Indian/Antananarivo' => 'E. Africa Standard Time',
    'Indian/Chagos' => 'Central Asia Standard Time',
    'Indian/Christmas' => 'SE Asia Standard Time',
    'Indian/Cocos' => 'Myanmar Standard Time',
    'Indian/Comoro' => 'E. Africa Standard Time',
    'Indian/Kerguelen' => 'West Asia Standard Time',
    'Indian/Mahe' => 'Mauritius Standard Time',
    'Indian/Maldives' => 'West Asia Standard Time',
    'Indian/Mauritius' => 'Mauritius Standard Time',
    'Indian/Mayotte' => 'E. Africa Standard Time',
    'Indian/Reunion' => 'Mauritius Standard Time',
    'MST7MDT' => 'Mountain Standard Time',
    'Pacific/Apia' => 'Samoa Standard Time',
    'Pacific/Auckland' => 'New Zealand Standard Time',
    'Pacific/Bougainville' => 'Bougainville Standard Time',
    'Pacific/Chatham' => 'Chatham Islands Standard Time',
    'Pacific/Easter' => 'Easter Island Standard Time',
    'Pacific/Efate' => 'Central Pacific Standard Time',
    'Pacific/Enderbury' => 'UTC+13',
    'Pacific/Fakaofo' => 'UTC+13',
    'Pacific/Fiji' => 'Fiji Standard Time',
    'Pacific/Funafuti' => 'UTC+12',
    'Pacific/Galapagos' => 'Central America Standard Time',
    'Pacific/Gambier' => 'UTC-09',
    'Pacific/Guadalcanal' => 'Central Pacific Standard Time',
    'Pacific/Guam' => 'West Pacific Standard Time',
    'Pacific/Honolulu' => 'Hawaiian Standard Time',
    'Pacific/Johnston' => 'Hawaiian Standard Time',
    'Pacific/Kiritimati' => 'Line Islands Standard Time',
    'Pacific/Kosrae' => 'Central Pacific Standard Time',
    'Pacific/Kwajalein' => 'UTC+12',
    'Pacific/Majuro' => 'UTC+12',
    'Pacific/Marquesas' => 'Marquesas Standard Time',
    'Pacific/Midway' => 'UTC-11',
    'Pacific/Nauru' => 'UTC+12',
    'Pacific/Niue' => 'UTC-11',
    'Pacific/Norfolk' => 'Norfolk Standard Time',
    'Pacific/Noumea' => 'Central Pacific Standard Time',
    'Pacific/Pago_Pago' => 'UTC-11',
    'Pacific/Palau' => 'Tokyo Standard Time',
    'Pacific/Pitcairn' => 'UTC-08',
    'Pacific/Ponape' => 'Central Pacific Standard Time',
    'Pacific/Port_Moresby' => 'West Pacific Standard Time',
    'Pacific/Rarotonga' => 'Hawaiian Standard Time',
    'Pacific/Saipan' => 'West Pacific Standard Time',
    'Pacific/Tahiti' => 'Hawaiian Standard Time',
    'Pacific/Tarawa' => 'UTC+12',
    'Pacific/Tongatapu' => 'Tonga Standard Time',
    'Pacific/Truk' => 'West Pacific Standard Time',
    'Pacific/Wake' => 'UTC+12',
    'Pacific/Wallis' => 'UTC+12',
    'PST8PDT' => 'Pacific Standard Time',
];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment