3

我正在尝试使用以下语句转换带有 php 5.3 的纪元时间戳

date('d-m-Y',strtotime('1349042399999'));

转换为人类可读的格式并得到错误的结果:01-01-1970应该返回什么30-09-2012。我一直在搜索并创建以下主题PHP strtotime 在日期列为空但对我的情况没有帮助时返回 1970 年的日期。

4

3 回答 3

7

原因是该时间戳中嵌入了毫秒,这导致它超过了整数溢出限制。

砍掉最后 3 个字符,你就可以开始了:

$original_timestamp = "1349042399999";
$timestamp = (int) substr($original_timestamp,0,-3);

echo date('d-m-Y',$timestamp);
于 2012-09-08T20:52:46.883 回答
0

我相信第二个 Rikudo 解决方案之所以有效,是因为强制转换为 int,而不是因为修剪毫秒。

在我看来,这应该对你有用(它对我有用)

$original_timestamp = "1349042399999"; date('dmY', (int) $original_timestamp);

于 2014-04-10T17:42:56.323 回答
0

通过使用strtotime,您正在尝试将时间戳转换为另一个时间戳。您的时间戳也以微秒为单位。该date函数只需要没有微秒的时间戳,如下所示:

date('d-m-Y',substr('1349042399999', 0, -3));
于 2012-09-08T20:51:58.957 回答