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

Laravel 11中用Carbon提取ISO时间时分报错,求正确格式

正确解析ISO8601格式时间并提取时分

你遇到的报错是因为指定的格式Y-m-d H:i:s和实际输入的时间字符串不匹配——输入里包含T分隔符、毫秒部分.000以及时区标识Z,这些都是原格式没覆盖到的“多余数据”,所以会抛出Unexpected data found. Trailing data错误。

解决方法有两种,按需选择:

方法一:用Carbon自动解析(推荐)

Carbon的parse()方法可以自动识别绝大多数标准时间格式(包括你这种ISO8601格式),直接调用后格式化出时分即可:

$hourMinute = Carbon::parse($request->time)->format('H:i');
// 结果为 07:23

方法二:严格指定匹配格式

如果你需要严格按照输入的格式来解析,要用对应格式字符串,注意转义字面量T和Z,同时匹配毫秒部分:

$hourMinute = Carbon::createFromFormat('Y-m-d\TH:i:s.u\Z', $request->time)->format('H:i');
// 结果为 07:23

格式字符串说明:

  • \T:转义字面量字符T
  • u:匹配毫秒/微秒部分(这里输入是三位毫秒,Carbon会自动兼容)
  • \Z:转义字面量字符Z

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:44:52