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()都会给我一个单行的结果?

4

1 回答 1

10

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

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

于 2013-09-20T08:56:11.670 回答