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

PHP中d/m/Y格式字符串日期加90天出错,求解决方案

问题分析

你的代码问题出在将DateTime对象转回字符串后用strtotime处理。strtotime默认会把d/m/Y格式的日期识别成m/d/Y,所以01/10/2022被当成了2022年1月10日,加90天后自然得到2022年4月10日(10/04/2022),和你预期的2023年1月1日不符。

正确实现方法

直接利用PHP的DateTime对象进行日期运算,不需要转成字符串再处理,这样更可靠:

$nextduedate = "01/10/2022";
// 解析d/m/Y格式的日期为DateTime对象
$myDateTime = DateTime::createFromFormat('d/m/Y', $nextduedate);
// 添加90天,使用DateInterval
$myDateTime->add(new DateInterval('P90D'));
// 格式化为d/m/Y输出
echo $myDateTime->format('d/m/Y');

运行这段代码会得到预期的01/01/2023。

另一种简化写法

也可以用modify方法直接添加天数:

$nextduedate = "01/10/2022";
$myDateTime = DateTime::createFromFormat('d/m/Y', $nextduedate);
$myDateTime->modify('+90 days');
echo $myDateTime->format('d/m/Y');

这两种方法都避免了strtotime的格式解析歧义,是处理日期运算的标准方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:50:43