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

Php 日期及日期;时间比较运算符>;=不显示相等的日期,php,datetime,Php,Datetime,我试图展示今天或以后发生的事件,其中今天就是问题所在 public function getInspirationsMeetingIds() { $ids = []; if (($inspirationMeetings = $this->getCustomField('meetings'))) { foreach ($inspirationMeetings as $meeting) { $row = new Inspiration

我试图展示今天或以后发生的事件,其中今天就是问题所在

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();
}
if(strotime($dateFrom)getId();
}
将显示今天和以前的事件。

使用DateTime类

time()
给出自1970年1月1日以来的秒数。精确到秒数的几率非常小,因此它几乎无法匹配

相反,创建一个带有时间的日期

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

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

我想你需要在datefrom上加一个时间戳

如果省略时间,STROTIME将添加中午。
看这个例子

将使它显示所有的日期


Edit将00:00添加到错误的一侧

时间是以秒为单位的。精确到秒的可能性非常小,可能是因为time()显示当前时间,而日期在time()之前有时间戳。什么格式是
$dateFrom
?我认为格式不重要,因为如果缺少strotime,strotime总是会添加一天中的一个时间。这不是问题。时间和strotime都以秒为单位显示时间。因为它是
=
比较,所以不是“一秒”的问题他试图匹配今天的比赛,但他正在与今天的某一秒进行比较。这是他的问题。任何大于的都可以,但他在=部分有问题。恐怕你错了。看,我为今天(上午9点)创建了一个时间,并将其与时间()进行比较当然,它不是>=,它更少,因此不匹配。您现在使用的是
date()
,而不是
time()
?我告诉过您时间不起作用。我确定。但我忘了时间
if (strtotime($dateFrom ) >= strtotime(date("Y-m-d 00:00"))) {