PHP strtotime 返回 false 表示 UTC 时间


PHP strtotime returning false for UTC time

我和我的同事从一些使用 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');