Skip to content

Commit

Permalink
Add missing microsoft timezones and test with confluence file (#41)
Browse files Browse the repository at this point in the history
  • Loading branch information
giuseppe-arcuti committed Jan 21, 2022
1 parent 8e3e2ad commit 059aabc
Show file tree
Hide file tree
Showing 4 changed files with 649 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/TimezoneGuesser/FindFromTimezoneMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class FindFromTimezoneMap implements TimezoneFinder

public function find(string $tzid, bool $failIfUncertain = false): ?DateTimeZone
{
$tzid = str_replace(".", "", $tzid);

// Next, we check if the tzid is somewhere in our tzid map.
if ($this->hasTzInMap($tzid)) {
return new DateTimeZone($this->getTzFromMap($tzid));
Expand Down Expand Up @@ -63,7 +65,7 @@ private function getTzMaps()
include __DIR__.'/../timezonedata/extrazones.php'
);
$this->map = array_combine(
array_map(static fn (string $key) => mb_strtolower($key, 'UTF-8'), array_keys($map)),
array_map(static fn (string $key) => str_replace(".", "", mb_strtolower($key, 'UTF-8')), array_keys($map)),
array_values($map),
);
}
Expand Down
87 changes: 87 additions & 0 deletions lib/timezonedata/windowszones.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,91 @@
'West Pacific Standard Time' => 'Pacific/Port_Moresby',
'Yakutsk Standard Time' => 'Asia/Yakutsk',
'Yukon Standard Time' => 'America/Whitehorse',
'coordinated universal time-11' => 'Pacific/Pago_Pago',
'aleutian islands' => 'America/Adak',
'marquesas islands' => 'Pacific/Marquesas',
'coordinated universal time-09' => 'America/Anchorage',
'baja california' => 'America/Tijuana',
'coordinated universal time-08' => 'Pacific/Pitcairn',
'chihuahua, la paz, mazatlan' => 'America/Chihuahua',
'easter island' => 'Pacific/Easter',
'guadalajara, mexico city, monterrey' => 'America/Mexico_City',
'bogota, lima, quito, rio branco' => 'America/Bogota',
'chetumal' => 'America/Cancun',
'haiti' => 'America/Port-au-Prince',
'havana' => 'America/Havana',
'turks and caicos' => 'America/Grand_Turk',
'asuncion' => 'America/Asuncion',
'caracas' => 'America/Caracas',
'cuiaba' => 'America/Cuiaba',
'georgetown, la paz, manaus, san juan' => 'America/La_Paz',
'araguaina' => 'America/Araguaina',
'cayenne, fortaleza' => 'America/Cayenne',
'city of buenos aires' => 'America/Argentina/Buenos_Aires',
'punta arenas' => 'America/Punta_Arenas',
'saint pierre and miquelon' => 'America/Miquelon',
'salvador' => 'America/Bahia',
'coordinated universal time-02' => 'America/Noronha',
'mid-atlantic - old' => 'America/Noronha',
'cabo verde is' => 'Atlantic/Cape_Verde',
'coordinated universal time' => 'UTC',
'dublin, edinburgh, lisbon, london' => 'Europe/London',
'monrovia, reykjavik' => 'Atlantic/Reykjavik',
'belgrade, bratislava, budapest, ljubljana, prague' => 'Europe/Budapest',
'casablanca' => 'Africa/Casablanca',
'sao tome' => 'Africa/Sao_Tome',
'sarajevo, skopje, warsaw, zagreb' => 'Europe/Warsaw',
'amman' => 'Asia/Amman',
'athens, bucharest' => 'Europe/Bucharest',
'beirut' => 'Asia/Beirut',
'chisinau' => 'Europe/Chisinau',
'damascus' => 'Asia/Damascus',
'gaza, hebron' => 'Asia/Hebron',
'jerusalem' => 'Asia/Jerusalem',
'kaliningrad' => 'Europe/Kaliningrad',
'khartoum' => 'Africa/Khartoum',
'tripoli' => 'Africa/Tripoli',
'windhoek' => 'Africa/Windhoek',
'istanbul' => 'Europe/Istanbul',
'kuwait, riyadh' => 'Asia/Riyadh',
'minsk' => 'Europe/Minsk',
'moscow, st petersburg' => 'Europe/Moscow',
'nairobi' => 'Africa/Nairobi',
'astrakhan, ulyanovsk' => 'Europe/Astrakhan',
'izhevsk, samara' => 'Europe/Samara',
'port louis' => 'Indian/Mauritius',
'saratov' => 'Europe/Saratov',
'ashgabat, tashkent' => 'Asia/Tashkent',
'islamabad, karachi' => 'Asia/Karachi',
'chennai, kolkata, mumbai, new delhi' => 'Asia/Kolkata',
'sri jayawardenepura' => 'Asia/Colombo',
'kathmandu' => 'Asia/Kathmandu',
'astana' => 'Asia/Almaty',
'dhaka' => 'Asia/Dhaka',
'yangon (rangoon)' => 'Asia/Rangoon',
'barnaul, gorno-altaysk' => 'Asia/Barnaul',
'tomsk' => 'Asia/Tomsk',
'beijing, chongqing, hong kong, urumqi' => 'Asia/Shanghai',
'perth' => 'Australia/Perth',
'ulaanbaatar' => 'Asia/Ulaanbaatar',
'eucla' => 'Australia/Eucla',
'chita' => 'Asia/Chita',
'seoul' => 'Asia/Seoul',
'adelaide' => 'Australia/Adelaide',
'brisbane' => 'Australia/Brisbane',
'canberra, melbourne, sydney' => 'Australia/Sydney',
'hobart' => 'Australia/Hobart',
'lord howe island' => 'Australia/Lord_Howe',
'bougainville island' => 'Pacific/Bougainville',
'chokurdakh' => 'Asia/Srednekolymsk',
'norfolk island' => 'Pacific/Norfolk',
'solomon is, new caledonia' => 'Pacific/Guadalcanal',
'anadyr, petropavlovsk-kamchatsky' => 'Asia/Kamchatka',
'coordinated universal time+12' => 'Pacific/Tarawa',
'petropavlovsk-kamchatsky - old' => 'Asia/Anadyr',
'chatham islands' => 'Pacific/Chatham',
'coordinated universal time+13' => 'Pacific/Enderbury',
"nuku'alofa" => 'Pacific/Tongatapu',
'kiritimati island' => 'Pacific/Kiritimati',
'helsinki, kyiv, riga, sofia, tallinn, vilnius' => 'Europe/Helsinki',
];
11 changes: 11 additions & 0 deletions tests/VObject/TimeZoneUtilTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -433,5 +433,16 @@ public function unSupportTimezoneProvider(): iterable
'origin' => 'EDT',
'expected' => 'America/Manaus',
];

if (($handle = fopen(__DIR__ . "/microsoft-timezones-confluence.csv", "r")) !== FALSE) {
$data = fgetcsv($handle);
while (($data = fgetcsv($handle)) !== FALSE) {
yield $data[0] => [
'origin' => $data[0],
'expected' => $data[2] !== '' ? $data[2] : $data[1],
];
}
fclose($handle);
}
}
}
Loading

0 comments on commit 059aabc

Please sign in to comment.