如何高效比较两个DateTime并检查它们是否为同一天?

5
我有两个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()这样的操作可以让我用一行代码得到结果?
1个回答

11

根据您最新的更改,这个会有效吗:

$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是否在今天。

不错的方法,思维简洁而精妙。谢谢! - Gottlieb Notschnabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接