2014-11-03 73 views
0

我在欧洲/维也纳时区的日期:时区转换有什么问题?

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')); 
+1

最可能的夏令时时间..你的代码步骤是什么? – Naruto 2014-11-03 12:45:46

+1

问题是它已经过DST更改 – Blacksonic 2014-11-03 12:51:52

+0

DST于2014年3月9日星期日开始,当地时间02:00(PST) DST于2014年11月2日星期日结束,02:00当地夏时制(PDT) – Blacksonic 2014-11-03 12:52:30

回答

1

之所以这样,是夏令时间有关:

在欧洲/维也纳,小时是在25日和10月26日夜间减少。这意味着在那天晚上有一个额外的小时..因为在欧洲/维也纳时区有一个额外的时间,它也将在1小时后的太平洋/中途时区..

如果你采取小时07:30欧洲/维也纳,您将获得与原创相同的结果。

欧洲/维也纳和太平洋/中途岛之间的时差= 13小时。

所以在第一例2014-10-25 08:30 - 13hrs == 2014-10-24 19:30。

对于25日= 2014-10-26 8:30 - 13hrs == 2014-10-25 19:30。

因为欧洲/维也纳DST在25日和10月26日的晚上,你必须添加1小时..所以这就是为什么它是2014年10月25日20:30

我希望很明显给你现在?