我试图展示今天或之后发生的事件,今天特别是问题。
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();
}
显示今天和更早的事件。
答案 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