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
是否在今天启用。好方法,好思维。谢谢