我的同事和我正在從一些使用strtotime的單元測試中獲得不同的結果。PHP strtotime在UTC時間返回false
的差異在這條線來源:
$value = strtotime('2050-05-01T20:10:29.410Z');
我的機器上,這樣的結果返回如下:
int(2535048629)
,而我同事的一個版本返回假
我們都使用PHP版本5.4.14和PHPUnit 3.724。
有沒有人知道是什麼原因導致了這種差異,並且有沒有更強大的方法?
我的同事和我正在從一些使用strtotime的單元測試中獲得不同的結果。PHP strtotime在UTC時間返回false
的差異在這條線來源:
$value = strtotime('2050-05-01T20:10:29.410Z');
我的機器上,這樣的結果返回如下:
int(2535048629)
,而我同事的一個版本返回假
我們都使用PHP版本5.4.14和PHPUnit 3.724。
有沒有人知道是什麼原因導致了這種差異,並且有沒有更強大的方法?
這是因爲他在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位機器。
32位和64位?你能證實嗎? – Halcyon
啊,我是64位。他是32 ... – sunwukung