Last active
April 28, 2017 07:37
-
-
Save zhengkai/e1920365f3552c3101943eae52f69517 to your computer and use it in GitHub Desktop.
timezone demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env php | |
<?php | |
// 在穿越白令海峡的那条国际日期变更线上的太平洋部分, | |
// 那些岛国为了跟邻国的贸易方便,修改了法定时区 | |
// | |
// 物理上,真太阳时只有 ±12,但是法律上,是 -12 到 +14 | |
// | |
// 所以北京时间的每天下午 18:00 到 19:00,地球上有三个不同的日期 | |
// | |
// 下面的例子里,同时有 4/7、4/8、4/9 三天 | |
$a = DateTimeZone::listAbbreviations(); | |
$l = []; | |
foreach ($a as $b) { | |
foreach ($b as $c) { | |
if (strlen($c['timezone_id']) < 3) { | |
continue; | |
} | |
if (abs($c['offset']) < 3600 * 11) { | |
continue; | |
} | |
$l[] = $c['timezone_id']; | |
} | |
} | |
$l = array_unique($l); | |
$l[] = 'Asia/Shanghai'; | |
$i = strtotime('2017-04-08 10:50:00 UTC'); | |
$o = (new DateTime('@' . $i))->setTimestamp($i); | |
foreach ($l as $tz) { | |
printf("%-21s %s\n", $tz, $o->setTimezone(new DateTimeZone($tz))->format('Y-m-d H:i:s')); | |
} | |
/* | |
output in PHP 7.1.4 | |
Australia/Melbourne 2017-04-08 20:50:00 | |
Antarctica/Macquarie 2017-04-08 21:50:00 | |
Australia/ACT 2017-04-08 20:50:00 | |
Australia/Brisbane 2017-04-08 20:50:00 | |
Australia/Canberra 2017-04-08 20:50:00 | |
Australia/Currie 2017-04-08 20:50:00 | |
Australia/Hobart 2017-04-08 20:50:00 | |
Australia/Lindeman 2017-04-08 20:50:00 | |
Australia/NSW 2017-04-08 20:50:00 | |
Australia/Queensland 2017-04-08 20:50:00 | |
Australia/Sydney 2017-04-08 20:50:00 | |
Australia/Tasmania 2017-04-08 20:50:00 | |
Australia/Victoria 2017-04-08 20:50:00 | |
America/Adak 2017-04-08 01:50:00 | |
America/Atka 2017-04-08 01:50:00 | |
America/Nome 2017-04-08 02:50:00 | |
Pacific/Midway 2017-04-07 23:50:00 | |
Pacific/Pago_Pago 2017-04-07 23:50:00 | |
Pacific/Samoa 2017-04-07 23:50:00 | |
Pacific/Bougainville 2017-04-08 21:50:00 | |
Pacific/Chatham 2017-04-08 23:35:00 | |
Pacific/Fiji 2017-04-08 22:50:00 | |
Pacific/Tarawa 2017-04-08 22:50:00 | |
Pacific/Kosrae 2017-04-08 21:50:00 | |
Pacific/Kwajalein 2017-04-08 22:50:00 | |
Australia/LHI 2017-04-08 21:20:00 | |
Australia/Lord_Howe 2017-04-08 21:20:00 | |
Pacific/Kiritimati 2017-04-09 00:50:00 | |
Pacific/Majuro 2017-04-08 22:50:00 | |
Pacific/Noumea 2017-04-08 21:50:00 | |
Pacific/Norfolk 2017-04-08 21:50:00 | |
Pacific/Nauru 2017-04-08 22:50:00 | |
Pacific/Niue 2017-04-07 23:50:00 | |
Pacific/Auckland 2017-04-08 22:50:00 | |
Antarctica/McMurdo 2017-04-08 22:50:00 | |
Antarctica/South_Pole 2017-04-08 22:50:00 | |
Pacific/Enderbury 2017-04-08 23:50:00 | |
Pacific/Pohnpei 2017-04-08 21:50:00 | |
Pacific/Ponape 2017-04-08 21:50:00 | |
Pacific/Guadalcanal 2017-04-08 21:50:00 | |
Pacific/Apia 2017-04-08 23:50:00 | |
Pacific/Fakaofo 2017-04-08 23:50:00 | |
Pacific/Tongatapu 2017-04-08 23:50:00 | |
Pacific/Funafuti 2017-04-08 22:50:00 | |
Pacific/Efate 2017-04-08 21:50:00 | |
Pacific/Wake 2017-04-08 22:50:00 | |
Pacific/Wallis 2017-04-08 22:50:00 | |
Asia/Shanghai 2017-04-08 18:50:00 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment