Php 比较两个日期或比较两个日期减去8小时
好吧,奇怪的一个 写了一个脚本来检查XML提要,如果我的孩子所在的县的学校关闭了。每个条目都有一个生效日期节点,即学校关闭公告生效的日期 我所做的是比较生效日期是否早于当前时间,这意味着在午夜之后,在当前日期结束工作。但是如果他们提前一天晚上放学怎么办 我需要检查生效日期是否大于今天,但从下午4点开始,而不是午夜Php 比较两个日期或比较两个日期减去8小时,php,Php,好吧,奇怪的一个 写了一个脚本来检查XML提要,如果我的孩子所在的县的学校关闭了。每个条目都有一个生效日期节点,即学校关闭公告生效的日期 我所做的是比较生效日期是否早于当前时间,这意味着在午夜之后,在当前日期结束工作。但是如果他们提前一天晚上放学怎么办 我需要检查生效日期是否大于今天,但从下午4点开始,而不是午夜 date_default_timezone_set('America/New_York'); $date_effective = $announcement->date_effe
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
}
用时间代替那个
<?php
date_default_timezone_set('America/New_York');
$date_effective = $announcement->date_effective;
$date = strtotime($date_effective);
// since 1 hr is 3600 secs so multiply this by 8 which result to 28800
$now = strtotime('now') - 28800;
if($date < $now) {
// iterate through cases based on status
}
与表示时差的符号组合使用:
$now = new DateTime;
$then = (clone $now)->sub(DateInterval::createFromDateString('8 hours'));
if ($date < $now || $date < $then) {
// ...
}
注意clone的用法,因为sub会修改调用它的对象。所以你想从$now中减去一些小时,并将其与$date进行比较,对吗?@AniketSahrawat是的$日期是常量,我需要知道当前时间是否晚于该日期的午夜,或者该日期的午夜减去前一天下午4点的8小时。那么,当您已经在检查日期是否在前一天下午4点之后时,为什么还要检查当前时间是否晚于该日期的午夜?日期的午夜显然将在前一天下午4点之后。现在,学校明天停课。生效日期为“2018-02-02 00:00:00.000000”。当前时间不超过那个日期,所以我的剧本认为明天学校不会关门。如果我将生效日期与今天下午4点进行比较,那么它会更大,并且会产生正确的情况。日期\默认\时区\集合的工作方式与您认为在strotime上的工作方式不同