如何使用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
相关产品推荐
相关产品推荐

