PHP中时间戳转换日期结果错误,请问问题出在哪里?
问题原因及解决办法
嘿,这个坑我之前踩过!你的问题核心出在时间戳的单位不匹配上:
PHP的date()函数默认只认秒级时间戳,但你传入的1466679909936是毫秒级时间戳(比标准秒级多了三位数字)。直接把毫秒数当成秒数传入,自然会算出一个远在未来的错误日期。
修复方案
有两种简单的解决方式:
方法1:将毫秒时间戳转为秒级
直接除以1000并取整(避免小数影响时间计算):
<?php $timestamp = floor(1466679909936 / 1000); // 转为秒级时间戳 echo date('Y-m-d H:i:s', $timestamp); // 输出:2016-06-23 01:05:09 ?>
方法2:用DateTime类处理(PHP 7.0+推荐)
如果你的PHP版本在7.0及以上,用DateTime类会更灵活直观:
<?php $timestamp = 1466679909936; $dateObj = (new DateTime())->setTimestamp($timestamp / 1000); echo $dateObj->format('Y-m-d H:i:s'); // 输出:2016-06-23 01:05:09 ?>
验证一下:1466679909936 ÷ 1000 = 1466679909.936,取整后得到的秒级时间戳1466679909,对应的正是你预期的2016年6月23日1点05分09秒。
内容的提问来源于stack exchange,提问作者user1557314
相关产品推荐
相关产品推荐

