我正在尝试使用以下语句
转换带有php 5.3的纪元时间戳date('d-m-Y',strtotime('1349042399999'));
以人类可读的格式获得错误的结果:01-01-1970
应返回30-09-2012
的内容。我一直在搜索并创建以下主题PHP strtotime returns a 1970 date when date column is null,但对我的案例没有帮助。
答案 0 :(得分:6)
原因是该时间戳中嵌入了毫秒,这导致它超过整数溢出限制。
砍掉最后3个字符,你很高兴:
$original_timestamp = "1349042399999";
$timestamp = (int) substr($original_timestamp,0,-3);
echo date('d-m-Y',$timestamp);
答案 1 :(得分:0)
通过使用strtotime
,您尝试将时间戳转换为另一个时间戳。您的时间戳也是以微秒为单位。 date
函数只需要没有微秒的时间戳,如下所示:
date('d-m-Y',substr('1349042399999', 0, -3));
答案 2 :(得分:0)
我相信第二个Rikudo解决方案的工作原理是因为转换为int,而不是因为修剪毫秒。
在我看来,这应该对你有用(它对我有用)
$ original_timestamp =“1349042399999”; date('d-m-Y',(int)$ original_timestamp);