我和我的同事从一些使用 strtotime 的单元测试中获得了不同的结果。
差异源于这一行:
$value = strtotime('2050-05-01T20:10:29.410Z');
在我的计算机上,此结果返回以下内容:
int(2535048629)
而我同事的版本返回错误
我们都使用 PHP 版本 5.4.14 和 PHPUnit 3.724。
有没有人知道是什么导致了这种差异,是否有更强大的方法?
它可能与 32 位与 64 位有关。2050 年的时间戳大于 32 位。
这是因为他在 32 位上,而你在 64 位机器上。查看两台机器echo PHP_INT_MAX;
回报。更多阅读 这里.
如果您希望在 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
而不是在 32 位机器上不起作用的date('r', '2535048629');
。