日期&时间比较运算符> =不显示相等的日期

时间:2018-05-15 10:13:24

标签: php datetime

我试图展示今天或之后发生的事件,今天特别是问题。

public function getInspirationsMeetingIds()
{
    $ids = [];
    if (($inspirationMeetings = $this->getCustomField('meetings'))) {

        foreach ($inspirationMeetings as $meeting) {

            $row = new Inspiration($meeting['meeting']);

            $dateFrom = $row->getCustomField('date');

            if (strtotime($dateFrom) >= time()) {
                $ids[] = $row->getId();
            }

        }
    }
     return $ids;
}

出于某种原因,这只会显示大于time()的事件而不是今天的事件,但是当我尝试这样的事件时:

if (strtotime($dateFrom) <= time()) {
            $ids[] = $row->getId();
}

显示今天和更早的事件。

2 个答案:

答案 0 :(得分:0)

使用DateTime类http://php.net/manual/en/class.datetime.php

time()给出了自1970年1月1日以来的秒数。你达到精确秒数的几率非常小,所以几乎不会匹配。

而是使用时间创建日期。

$date = new DateTime($dateFrom); // or DateTime::createFromFormat($format, $dateFrom);
$today = new DateTime();

if ($date >= $today) {
   // should work
}

答案 1 :(得分:0)

我认为您需要为日期添加时间戳。

如果省略时间,Strtotime将会中午 请参阅此示例https://3v4l.org/cYKO4

if (strtotime($dateFrom ) >= strtotime(date("Y-m-d 00:00"))) {

将显示所有日期

编辑在错误的一侧添加了00:00