如何有效地比较两个DateTime并检查它们是否在同一天?

Got*_*bel 4 php datetime datediff

我有两个DateTime对象

$lastDate = $entity->getDate(); // is a DateTime with same format as $today
$today    = \DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
Run Code Online (Sandbox Code Playgroud)

现在我想检查一下,如果这两个日期是同一天,或者它们是否相隔超过一天(但这也应该包括$lastDay昨天晚上11点和$today新的一天凌晨1点).

到目前为止我所拥有的是什么

$diff = $today->diff($lastDate);

if($diff->days > 0) {
    $return = false;
} else {
    $return = true;
}
Run Code Online (Sandbox Code Playgroud)

问题是:这似乎可以计算出日期是否超过彼此超过24小时,并且只有true在这种情况下才会设置.

我可以考虑通过比较来比较它们$date->format('d');,但这意味着我也会检查年份和月份.我知道这样可以完美地工作,但这将是一个五行或左右.

所以我的问题是:有没有更有效的方法来检查这个?这样的任何操作diff()都会给我一个单行的结果?

Ant*_*ony 8

根据您的最新更改,这不会起作用:

$votedToday = ($today->format('Y-m-d') == $lastDate->format('Y-m-d'));
Run Code Online (Sandbox Code Playgroud)

我同意有点奇怪,DateTime没有一个方法来提取日期部分,类似于MySQL,但是如果你要使用format,为什么不跳过diff并只是比较格式化日期字符串的完整日期两个DateTime对象?

为了进一步简化,您可以使用:

$votedToday = ($lastDate->format('Y-m-d') == date('Y-m-d'));
Run Code Online (Sandbox Code Playgroud)

假设你只是$today用来确认$lastDate今天是否在.