2013-02-16 170 views
4

學習日期,他們給我現在很難。UNIX時間戳(0):歐洲/倫敦返回UTC + 1

$london = new DateTime(); 
$london->setTimestamp(0); 
$london->setTimeZone(new DateTimeZone('Europe/London')); 

echo $london ->format('d-m-Y H-i-s'); 

結果:

01-01-1970 01-00-00 

不應該是在倫敦,因此UTC +0:00午夜?例如,紐約返回前一日期的19:00,正確的是UTC -5:00。莫斯科不使用->setTimestamp返回01-01-1970 03-00-00這又是不正確的(UTC +3:00而不是UTC +4:00

,倫敦當前的時間正確渲染,雖然。

Livecode:http://sandbox.onlinephpfunctions.com/

而且,我的本地時區爲Europe/PragueUTC +1:00)。測試date_default_timezone_set('Europe/London')以及。

我認爲在我的邏輯中有一些錯誤?

回答

10

這是因爲很明顯,英國是在British Summer Time於1970年1月1日,UTC提前一小時(重點煤礦):

的1959至1960年冬季的調查,其中180國家組織進行了諮詢,發現略有偏好改變爲全年GMT + 1,但夏季時間的長度延長了審判,而不是在國內使用格林威治標準時間[6]。在1966-67年期間的進一步調查導致哈羅德威爾遜政府推出英國標準時間實驗,英國在格林尼治標準時間+1時全年保持不變。這發生在1968年10月27日至1971年10月31日之間,當時回到原來的安排。

timeanddate.com的Time Zone Converter是一個很好的工具,用於查找這樣的東西。

+0

PHP的等價物http://stackoverflow.com/a/6841479/427992? ;) – hohner 2013-02-16 14:05:51

+0

@hohner大聲笑!想想看,雖然,如果這裏有重複的地方,我不會感到驚訝...... – 2013-02-16 14:06:33

+0

哇,我從來不知道。讓我想到我不存在的一堆歷史書籍的塵埃。我猜俄羅斯做了類似的事情嗎? – Dwelle 2013-02-16 14:13:00