PHP中时间戳转yyyy-mm-dd hh:ii:ss时年份错误的解决方法
毫秒级时间戳格式化后年份错误的解决办法
你的问题根源在于:PHP的date()函数和DateTime::setTimestamp()方法只支持秒级时间戳,但你传入的是毫秒级时间戳(比如1679909217390),直接使用会导致时间计算严重偏移,所以出现55204这类错误年份。
只需将毫秒时间戳转换为秒级时间戳(除以1000并取整),就能得到正确的格式化结果,以下是两种方法的修正代码:
方法1:使用date()函数
// 将毫秒时间戳转为秒级,用intval确保是整数类型 $formattedDate = date('Y-m-d H:i:s', intval($comments[0]['created'] / 1000));
方法2:使用DateTimeImmutable类
// 先转换为秒级时间戳再设置 $date = new DateTimeImmutable(); $actualDate = $date->setTimestamp(intval($comments[0]['created'] / 1000)); $formattedDate = $actualDate->format('Y-m-d H:i:s');
如果需要保留毫秒精度(格式化时不需要的话可以忽略),也可以用更精确的方式实例化DateTime:
$date = DateTimeImmutable::createFromFormat('U.u', sprintf('%.3F', $comments[0]['created'] / 1000)); $formattedDate = $date->format('Y-m-d H:i:s');
内容的提问来源于stack exchange,提问作者Chabi_Browny
相关产品推荐
相关产品推荐

