PHP strtotime在UTC时间返回false

时间:2013-10-23 16:19:11

标签: php utc strtotime

我和我的同事从一些使用strtotime的单元测试中获得了不同的结果。

差异源于这一行:

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

在我的机器上,此结果返回以下内容:

int(2535048629)

而我的同事的版本返回 false

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

有没有人知道造成这种差异的原因是什么?是否有更强大的方法?

2 个答案:

答案 0 :(得分:2)

这可能与32位与64位有关。 2050年的时间戳大于32位。

答案 1 :(得分:1)

这是因为他是32位的,而你是在64位机器上。查看两台计算机上echo PHP_INT_MAX;返回的内容。更多阅读here

如果您希望在32位计算机上获取时间戳,可以将DateTime用作:

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

或将输入的时间戳格式化为:

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

而不是date('r', '2535048629');,它不适用于32位计算机。