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

为什么Laravel 8中Carbon::createFromFormat返回无效日期?

错误原因
  • 日期格式字符串参数误用:H:m中的m是月份的格式化标识符,不是分钟标识符,Carbon会把时间部分的56识别为月份值。
  • 月份最大有效值为12,56超出范围后Carbon会自动做日期进位计算:56 ÷ 12 = 4年余8个月,原2021年累加为2025年,月份变为8月,同时因为没有正确配置分钟的格式化参数,分钟默认被解析为00,最终得到你看到的错误结果。
  • 你原代码中09/02/2021 05:56外层使用了中文单引号,运行时会触发语法错误,需要替换为英文单引号。
正确实现

分钟对应的格式化标识符为i,将格式字符串中的H:m修改为H:i即可,正确代码如下:

$date = Carbon::createFromFormat('m/d/Y H:i', '09/02/2021 05:56', config('app.timezone'));

执行后得到的日期为预期的2021-09-02 05:56:00。

常用格式化参数参考

日常使用注意区分以下高频格式化参数,避免混淆:

  • m:带前导零的月份(01-12)
  • i:带前导零的分钟(00-59)
  • s:带前导零的秒(00-59)
  • d:带前导零的日期(01-31)
  • H:24小时制带前导零的小时(00-23)
  • h:12小时制带前导零的小时(01-12)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:24:03