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

PHP中strtotime跨午夜添加时间返回错误结果的问题求助

问题分析与解决

你遇到的问题根源在于date函数的格式符使用错误:

你当前的代码用了h:i:s格式,其中h代表12小时制的小时数(范围1-12),所以当时间走到次日00:30时,12小时制下会显示为12:30(AM),这就是你看到异常结果的原因。

而DateTime类的代码里用了H:i:s,H是24小时制的小时数(范围00-23),所以能正确显示00:30。

修正后的strtotime代码

把格式符里的h换成H即可得到正确结果:

echo date("Y-m-d H:i:s", strtotime("2024-11-26 23:30:00 +3600 seconds"));

执行这段代码会输出2024-11-27 00:30:00,符合预期。

补充说明

strtotime本身的时间计算是正确的,错误出在最终的格式化环节。12小时制的h会把0点转换为12,而24小时制的H会保留00的显示。这个行为不是PHP版本更新导致的,是date函数格式符的标准规则,一直存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:37:34