dsmgcse8876 2018-02-01 18:15
浏览 243
已采纳

比较两个日期或比较两个日期减去8个小时

Ok, weird one.

Wrote a script to check XML feed if school is closed for my kids county. Each entry comes with an "effective date" node, which is the date the school closing announcement is effective.

What I was doing, was comparing if the effective date, is older than the current time, which means that after midnight, a closing on the current day would work. But what if they close school the evening/night beforehand?

I need to check if the effective date is greater than today, but starting at 4pm instead of midnight.

date_default_timezone_set('America/New_York');
$date_effective = $announcement->date_effective;
// format of xml feed datetime - 2018-02-02 00:00:00.000000
$date = new DateTime($date_effective);
$now = new DateTime();
// Here is where I need help, not sure how to word this
// if($date < $now || $date < $now - '8 hours') {
if($date < $now) {
    // iterate through cases based on status
}
  • 写回答

2条回答 默认 最新

  • douwen1937 2018-02-01 18:35
    关注

    Use \DateTime::sub combined with a \DateInterval representing the time difference:

    $now  = new DateTime;
    $then = (clone $now)->sub(DateInterval::createFromDateString('8 hours'));
    if ($date < $now || $date < $then) {
        // ...
    }
    

    (Note the use of clone, because sub modifies the object on which it's called.)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部