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

时间:2013-09-20 08:19:08

标签: 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'));

现在我想检查一下,如果这两个日期是同一天,或者它们相隔超过一天(但如果$lastDay是昨天晚上11点而且$today是新的一天上午1点。)

到目前为止我所拥有的是

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

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

问题是:如果日期彼此超过24小时,这似乎很重要,如果是这样的话,只会设置为true

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

所以我的问题是:是否有更多高效的方法来检查这个?像diff()之类的任何操作都会给我一个单行的结果吗?

1 个答案:

答案 0 :(得分:8)

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

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

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

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

diff

假设您仅使用$votedToday = ($lastDate->format('Y-m-d') == date('Y-m-d')); 确认今天是否$today