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

如何使用PHP DateTime的modify方法设置指定时间(如18点)?

解决方法:替换偏移小时为固定时间点

嘿,这个需求其实很简单,咱们不用再靠“加X小时”来凑目标时间,直接设置前一天的固定时刻就好,给你两种常用的实现方式:

方法1:用setTime()精准设置时分秒

先把日期减1天,再调用DateTime对象的setTime()方法直接指定18点0分0秒,这种方式适合需要动态调整时间参数的场景:

$periodauction = '2018-04-09T10:00:00';
$result = DateTime::createFromFormat('Y-m-d\TH:i:s', $periodauction)
    ->modify('-1 day')
    ->setTime(18, 0, 0) // 参数依次是小时、分钟、秒(秒可选,默认0)
    ->format('Y-m-d\TH:i:s');

// 输出结果:2018-04-08T18:00:00

方法2:用modify()直接组合偏移和固定时间

如果你只需要固定到18点,也可以直接在modify()的字符串里把“减1天”和“18:00:00”组合起来,写法更简洁:

$periodauction = '2018-04-09T10:00:00';
$result = DateTime::createFromFormat('Y-m-d\TH:i:s', $periodauction)
    ->modify('-1 day 18:00:00')
    ->format('Y-m-d\TH:i:s');

// 输出结果:2018-04-08T18:00:00

两种方式都能完美达到你的需求,选哪种看你后续是否需要灵活调整时间参数啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:26:56