2021-10-04T08:19:54.000+04:00是什么日期格式?如何用PHP转成d.m.Y H:i:s
问题解答
1. 日期格式说明
你给出的2021-10-04T08:19:54.000+04:00属于ISO 8601国际标准日期格式的扩展版本,包含毫秒级精度和时区偏移信息,其中:
T是日期和时间部分的固定分隔符.000是毫秒值+04:00是该时间对应的时区偏移,代表比UTC时间快4小时
2. 原有代码不生效的原因
gmdate()函数的第二个参数要求传入整数类型的Unix时间戳,你直接传入日期字符串不符合参数要求,因此无法得到正确结果。
3. 正确实现方式
推荐两种可行方案:
方案1:使用DateTime类(优先推荐,稳定性更高)
DateTime原生支持解析ISO 8601格式的日期,也可灵活处理时区转换,示例代码:
// 传入原始日期字符串创建DateTime对象 $date = new DateTime('2021-10-04T08:19:54.000+04:00'); // 按目标格式输出原时区时间 echo $date->format('d.m.Y H:i:s'); // 如果需要转换为UTC时区输出,可补充时区设置代码: // $date->setTimezone(new DateTimeZone('UTC')); // echo $date->format('d.m.Y H:i:s');
原时区输出结果:04.10.2021 08:19:54
UTC时区输出结果:04.10.2021 04:19:54
方案2:先转Unix时间戳再处理
如果你习惯使用date/gmdate函数,可以先用strtotime()把字符串转为时间戳后再处理:
$timestamp = strtotime('2021-10-04T08:19:54.000+04:00'); // 输出原时区时间 echo date('d.m.Y H:i:s', $timestamp); // 输出UTC时区时间 echo gmdate('d.m.Y H:i:s', $timestamp);
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

