如何用DateTime和DateInterval正确获取当前时间加15分钟的时间戳
问题解决与DateInterval参数说明
代码修复
你的代码输出相同时间的核心原因是:DateTime::add()方法会直接修改调用它的原DateTime对象,并且返回的是该对象的引用。这意味着$now和$in_15_m指向的是同一个实例,自然输出完全一致。
修复方式是先克隆原DateTime对象,再对克隆后的实例执行时间添加操作:
$now = new DateTime('now'); // 克隆原对象,避免修改初始时间实例 $in_15_m = clone $now; $in_15_m->add(new DateInterval('PT15M')); echo 'Now:' . $now->format('Y-m-d\TH:i:s\Z'); echo PHP_EOL; echo 'In 15 min: ' . $in_15_m->format('Y-m-d\TH:i:s\Z');
DateInterval参数解析
你使用的PT15M是完全正确的,它遵循ISO 8601时间间隔规范,拆解规则如下:
P:固定起始标记,代表"Period(周期)"T:用于分隔日期部分和时间部分,如果间隔只包含时间维度(比如小时、分钟),必须添加这个标记15M:代表15分钟(注意:M在T后表示分钟;如果在P后直接使用,则代表月份)
常用参数示例:
P2D:2天PT3H:3小时P1DT2H30M:1天2小时30分钟P6M:6个月
内容的提问来源于stack exchange,提问作者Álvaro Franz
相关产品推荐
相关产品推荐

