You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中使用Carbon解析指定日期格式时报错如何解决

错误原因

你传入的时间字符串2021-10-12T09:20:27:915 GMT+0600不符合Carbon/DateTime原生自动解析的规则:秒数和毫秒数之间的分隔符错误使用了冒号:,标准时间格式中该位置应为小数点.,因此解析器在扫描到第19位的冒号时抛出异常。

解决方案

提供两种可直接使用的修复方式:

方案1:预处理时间字符串后自动解析

将秒和毫秒之间的冒号替换为小数点,再用parse方法解析:

$originalTime = '2021-10-12T09:20:27:915 GMT+0600';
// 仅替换秒与毫秒之间的冒号,避免误改其他位置的分隔符
$processedTime = preg_replace('/:(\d{3}) GMT/', '.$1 GMT', $originalTime);
dd(Carbon::parse($processedTime)->format('Y-m-d h:i:s'));

方案2:指定格式直接解析(更稳定)

无需修改原字符串,直接用createFromFormat方法匹配你当前的时间格式解析,可控性更高:

$originalTime = '2021-10-12T09:20:27:915 GMT+0600';
// 格式字符说明:\T是匹配固定字符T,:v匹配冒号+3位毫秒,e匹配时区标识
$date = Carbon::createFromFormat('Y-m-d\TH:i:s:v e', $originalTime);
dd($date->format('Y-m-d h:i:s'));

内容的提问来源于stack exchange,提问作者kashfiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:57:03