2013-04-03 45 views
9

正在使用strtotime讓過去1 January 1970秒,但我不明白這是爲什麼我得到-3600如果時鐘設置爲12.00AM,我得到0時,時鐘設置爲1 AM,所以與1 HOUR什麼?這是時區問題嗎?爲什麼strtotime(1970年1月1日)在PHP中返回-3600而不是0?

echo 'I Expect 0 Here '.strtotime('1st January 1970').'<br />'; 
//This gives me -3600 

echo 'I Expect 3600 Here '.strtotime('1st January 1970 01.00AM'); 
//This gives me 0 

PS我沒有設置任何時區在我的PHP文件或我甚至不 修改我的.ini文件(鮮安裝XAMPP)

更新:時區:歐洲/柏林

+0

題外話,但ROFL @您的base64編碼的電子郵件 – asprin

+1

@asprin題外話評論我想:P)呵呵謝謝反正,我認爲這是恭維 –

+1

是的,這是一種恭維,開箱即用的思想和幽默。 – asprin

回答

8

這很可能是由於當地time zone
什麼的

var_dump(date_default_timezone_get()); 

該機器上的輸出?
您還可以檢查mktime和gmmktime

echo " mktime: ", mktime(), "\n"; 
echo " gmmktime: ", gmmktime(), "\n"; 
+0

我確定時區正在搞砸東西....謝謝 –

+0

對於mktime()和gmmktime()... :) +1 –

6

您的時區必須設置爲UTC + 1。你的時區午夜發生在UTC的午夜前一小時,這解釋了-3600秒的偏移。

您可以將時區設置爲UTC來獲得期望的結果:

date_default_timezone_set('UTC'); 
+0

謝謝,我現在正在使用這個來重置UTC的時區 –

4

你需要檢查你的時區設置之間的差異。或者如果將default_time_zone設置爲UTC,則會得到所需的結果。

date_default_timezone_set('UTC'); 
1

添加此設置時區「歐洲/柏林

date_default_timezone_set('Europe/Berlin');