2012-03-16 66 views
4

我也搜索了PHP手冊和StackOverflow,但還沒有真正找到適合我的問題的答案。我的日期以UTC格式保存。現在如果我這樣做:PHP日期時間DST

$date = new DateTime('2012-03-16 14:00:00', 'UTC'); 
$date->setTimezone('Europe/Budapest'); 

將DateTime :: setTimezone()自動設置夏時制?因此,如果我格式化字符串,它會在夏季時間輸出15:00:00並且在冬季時間輸出16:00:00?或者我將不得不手動設置DST?

相關問題,如果我想得到一個DST獨立的UTC時間(我可以存儲),以下的工作?

$date = new DateTime('now', 'UTC'); 
$date->format('Y-m-d H:i:s'); 

或更好地使用簡單的gmdate('Y-m-d H:i:s')

+2

正如你很確定你有答案,爲什麼不試試呢? – 2012-03-16 12:00:38

+2

有些國家不使用DST。不同的PHP版本有不同的Olson數據庫。 PHP 5.2和5.3中的DateTime可能存在差異。可能存在維護版本中修復的錯誤。我只是想確定。 – 2012-03-16 12:03:23

回答

5

你的假設是正確的。

此外,這將花費你10秒來驗證你自己。

編輯:

正確的語法是:

$date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC')); 

關於你的第二個問題。在DateTime構造函數中傳遞的時區是'參考'時區。除非默認時區也設置爲UTC(date_default_timezone_set),否則您仍應該調用 - > setTimeZone(new DateTimeZone('UTC'))在UTC時區中設置其格式。

下一次,請在嘗試之前嘗試一些更難的嘗試。

+0

謝謝!你是對的,第二個參數必須是DateTimeZone對象。 – 2012-03-16 12:17:45