Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何有效地比较两个日期时间并检查它们是否在同一天?_Php_Datetime_Datediff - Fatal编程技术网

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

Php 如何有效地比较两个日期时间并检查它们是否在同一天?,php,datetime,datediff,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 = $t

我有两个
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
是否在今天启用。

好方法,好思维。谢谢