我和我的同事从一些使用strtotime的单元测试中获得了不同的结果。
差异源于这一行:
$value = strtotime('2050-05-01T20:10:29.410Z');
在我的机器上,此结果返回以下内容:
int(2535048629)
而我的同事的版本返回 false
我们都使用PHP版本5.4.14和PHPUnit 3.724。
有没有人知道造成这种差异的原因是什么?是否有更强大的方法?
答案 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位计算机。