我在欧洲/维也纳时区有一个约会:
2014-10-25 08:30:00
在太平洋/中途岛时区转换为:
2014-10-24 19:30:00
当我前进一天时,转换后的小时数会发生变化:欧洲/维也纳
2014-10-26 08:30:00
太平洋/中途岛
2014-10-25 20:30:00
造成这种差异的原因是什么?
复制代码:
$date = new DateTime('2014-10-25 08:30:00', new DateTimeZone('Europe/Vienna'));
$date->setTimezone(new DateTimeZone('Pacific/Midway'));
var_dump($date->format('Y-m-d H:i:s'));
$date = new DateTime('2014-10-26 08:30:00', new DateTimeZone('Europe/Vienna'));
$date->setTimezone(new DateTimeZone('Pacific/Midway'));
var_dump($date->format('Y-m-d H:i:s'));
这与夏令时有关的原因:
在欧洲/维也纳,10月25日和26日晚上的营业时间缩短。这意味着在那个晚上还有1个小时。。因为欧洲/维也纳时区还有1个小时,太平洋/中途岛时区也会晚1个小时。。
如果你花07:30欧洲/维也纳的时间,你会得到与原来相同的结果。。
欧洲/维也纳和太平洋/中途岛之间的时差=13小时。
因此,在第一种情况下2014-10-25 08:30-13小时==2014-10-24 19:30。
对于25日=2014-10-26 8:30-13小时==2014-10-25 19:30。
但是因为欧洲/维也纳在10月25日和26日晚上实行夏令时,所以您必须增加1小时。。这就是为什么它是2014-10-25 20:30
我希望你现在明白了?