0

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

差异源于此行:

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

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

int(2535048629)

而我同事的版本返回false

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

有没有人知道是什么导致了这种差异,是否有更强大的方法?

4

2 回答 2

2

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

于 2013-10-23T16:22:19.977 回答
1

这是因为他使用的是 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

date('r', '2535048629');不是在 32 位机器上不起作用。

于 2013-10-23T16:28:30.597 回答