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

PHP中DateTime::createFromFormat返回错误日期问题解决

PHP DateTime::createFromFormat 日期返回异常问题排查

问题表现

执行如下代码:
$date = DateTime::createFromFormat('D d/m', 'Mon 05/02');
预期获得2月5日的日期对象,实际返回结果为:

DateTime Object ( [date] => 2021-02-08 10:02:10.000000 [timezone_type] => 3 [timezone] => Europe/Brussels )

返回结果和预期完全不符。

问题根因

  • DateTime::createFromFormat方法在格式规则未指定Y(年份)参数时,会默认填充当前系统时间所属的年份
  • 本次场景下预期构造的是2022年的2月5日,而PHP默认填充了2021年,2021年2月5日不是周一,不符合格式规则中D(周几)的约束,方法会自动向后偏移到最近的符合周一规则的日期,也就是2021年2月8日,最终导致返回结果异常

解决方案

调整格式规则补充年份参数Y,同时在输入的日期字符串中补充对应年份即可,修改后示例代码如下:
$date = DateTime::createFromFormat('D d/m Y', 'Mon 05/02 2022');
执行后即可得到预期的2022年2月5日的日期对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:36:05