2011-11-01 21 views
2

與PHP一些奇怪的行爲今天:PHP - 2個日期之間的秒怪差(90000,而不是86400)

$ds = array('2011-10-28', '2011-10-29', '2011-10-30', '2011-10-31','2011-11-01'); 
for($i=0; $i<count($ds); $i++) { 
    print_r($ds[$i].' '.strtotime($ds[$i])."\n"); 
    if ($i < count($ds)-1) { 
    print_r(abs(strtotime($ds[$i+1]) - strtotime($ds[$i]))."\n"); 
    } 
} 

輸出:

2011-10-28 1319756400 
86400 
2011-10-29 1319842800 
86400 
2011-10-30 1319929200 
90000 
2011-10-31 1320019200 
86400 
2011-11-01 1320105600 

任何人都可以解釋30之間的反常90000和第31?

+3

您的時區是否遇到夏令時變化或類似情況?你獲得了一個小時... –

+0

我不明白我的PHP 5.3安裝。您的PHP是否有舊/過時的夏令時表?不同的是3600秒,這是1小時。這通常意味着一個DST邊界被越過。 –

回答

5

90000秒是25小時 - 25小時的一天可能只意味着一件事...時鐘在夏時制結束時被放回。

當然在英國(我不知道其他地方)發生在週日早上,結果30日是25小時的一天。

+0

Doh!謝謝 :-) – EoghanM

2

它看起來這是一個附加小時由於夏令時的變化:

90000 = 25 * 60 * 60 
1

爲正確轉換,你應該添加的日期字符串「+00」(UTC時區)。
例如strtotime(「2011-10-30 +00」);