2013-10-23 100 views
0

我的同事和我正在從一些使用strtotime的單元測試中獲得不同的結果。PHP strtotime在UTC時間返回false

的差異在這條線來源:

$value = strtotime('2050-05-01T20:10:29.410Z'); 

我的機器上,這樣的結果返回如下:

int(2535048629) 

,而我同事的一個版本返回

我們都使用PHP版本5.4.14和PHPUnit 3.724。

有沒有人知道是什麼原因導致了這種差異,並且有沒有更強大的方法?

+0

32位和64位?你能證實嗎? – Halcyon

+0

啊,我是64位。他是32 ... – sunwukung

回答

1

這是因爲他在32位,而你在64位機器上。看看兩臺機器上的echo PHP_INT_MAX;都會返回什麼結果。更多閱讀here

如果你希望得到的32位機器上的時間戳,您可以使用日期時間爲:

$value = new DateTime('2050-05-01T20:10:29.410Z'); 
echo $value->format('U'); // returns 2535048629 as string 

或格式inputed時間戳:

$value = new DateTime('@2535048629'); 
echo $value->format('r'); // Sun, 01 May 2050 20:10:29 +0000 

,而不是date('r', '2535048629');這是行不通的上32位機器。

2

這很可能與32位和64位有關。 2050年的時間戳大於32位。

+0

最後,我授予了Glavic的答案,因爲他的解釋爲可能遇到同樣問題的其他人添加了更多的細節。 – sunwukung