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

PHP中date_sub与DateInterval搭配使用出现时间偏移异常问题

问题根本原因

你遇到的时间偏差是日期格式化符号使用错误导致的,和date_sub的计算逻辑没有任何关系。
PHP的date_format/date函数的格式符规则里:

  • m代表的是带前导零的月份,取值范围是01~12
  • 代表带前导零的分钟的符号是i,你代码里错误把分钟位用了m,导致你看到的“分钟”数值实际是对应日期的月份值。

对应你给出的运行结果解释

你输出的当前时间是2021-10-01 16:10:18,这里的10不是分钟,是10月;
减3天之后日期变成2021年9月28日,月份从10变成9,所以显示的“分钟”位变成了09,你误以为是少了1分钟,实际分钟数从来没有变过。
同理你把时间间隔改成P3M(间隔3个月),月份会从10直接减到7,显示的“分钟”位就变成07,和原来的10差3,你就以为是出现了3分钟偏差。

修复方案

把你所有date_format里的格式字符串从"Y-m-d H:m:s"改成"Y-m-d H:i:s"即可,重新运行就能看到date_sub的计算结果完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:54:02