如何转换2021-05-24T04:44:56+00:00格式时间?Laravel 8下Carbon处理方案
时间格式解析与转换方案
格式说明
你收到的 2021-05-24T04:44:56+00:00 是符合 ISO 8601 国际标准的时间字符串,同时也完全兼容 RFC 3339 规范:
- 字符
T作为日期段和时间段的分隔符 - 末尾
+00:00代表该时间所属时区为UTC(零时区)
Laravel 8 下的最优转换方案
Laravel 8 内置了Carbon日期处理库,无需额外安装第三方依赖,原生支持解析该格式的时间字符串,有两种常用的解析方式:
1. 通用解析(最简便)
直接调用Carbon::parse()方法即可自动识别该格式,返回Carbon实例:
use Carbon\Carbon; // 从Mailchimp获取的原始时间字符串 $rawTime = '2021-05-24T04:44:56+00:00'; $carbonTime = Carbon::parse($rawTime);
2. 严格格式解析(避免歧义,更稳定)
如果需要严格匹配格式避免特殊场景下的解析误差,可以使用createFromFormat()方法指定对应格式规则:
// 格式规则中`\T`是转义的T字符,`P`代表带冒号的时区偏移值 $carbonTime = Carbon::createFromFormat('Y-m-d\TH:i:sP', $rawTime);
拿到Carbon实例后你可以根据业务需求随意转换,比如转换为项目配置的东八区时间输出:
// 转换为北京时间并格式化输出 echo $carbonTime->setTimezone('Asia/Shanghai')->toDateTimeString(); // 输出示例:2021-05-24 12:44:56
如果需要将该时间存入模型,也可以直接在模型的$casts属性中配置自动转换,无需手动处理:
// 对应模型的$casts配置 protected $casts = [ 'mailchimp_event_time' => 'datetime', ];
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

