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

PHP中如何为DateTime对象加1秒并检查时间差?

哈哈,一眼就看到问题啦!你这里犯了个很容易搞混的小错误,核心问题出在DateInterval的格式字符串上:

问题根源

你写的 PT' . 1 . 'M' 里的 M 代表的是分钟(Minute),但你实际想要添加的是1秒,对应的正确标识符应该是 S(Second)。另外还有个小细节:你在diff->format()里用了两次%m,第一个%m是月份的格式符,第二个想表示分钟的话应该用%i,不然会重复输出月份数值。

修正后的代码

<?php
$datetime1 = new \DateTime("now", new \DateTimeZone("UTC"));
$datetime2 = new \DateTime("now", new \DateTimeZone("UTC"));
// 把M改成S,代表添加1秒
$datetime2->add(new DateInterval('PT1S')); 
$diff = $datetime1->diff($datetime2);
// 把第二个%m改成%i,对应分钟
echo $diff->format('%d days, %m months, %y years, %i minutes, %s seconds');
?>

额外优化小技巧

如果你想彻底避免两次new \DateTime("now")可能带来的微秒级时间差(虽然概率极低),可以直接克隆第一个DateTime对象:

$datetime2 = clone $datetime1;
$datetime2->add(new DateInterval('PT1S'));

验证结果

修正后运行代码,就能得到你预期的输出:

0 days, 0 months, 0 years, 0 minutes, 1 seconds

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:22:31