2014-11-03 46 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

我希望很明顯給你現在?