如何有效地比较两个日期时间并检查它们是否是同一天


How can I efficiently compare two DateTimes and check if they are the same day?

我有两个DateTime对象

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

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

到目前为止,我所拥有的是

$diff = $today->diff($lastDate);
if($diff->days > 0) {
    $return = false;
} else {
    $return = true;
}

问题是:如果日期相距超过 24 小时,这似乎会计算在内,并且只有在这种情况的情况下才设置为true

我可以考虑通过比较$date->format('d');来比较它们,但这意味着我也要检查年份和月份。我知道这会完美无缺,但这将是五行左右。

所以我的问题是:有没有更有效的方法来检查这一点?有没有像diff()这样的操作,在单行中给我结果?

根据您的最新更改,这是否可行:

$votedToday = ($today->format('Y-m-d') == $lastDate->format('Y-m-d'));

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

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

$votedToday = ($lastDate->format('Y-m-d') == date('Y-m-d'));

假设您今天只使用$today来确认$lastDate是否打开。