PHP日期时间相等
如果两个DateTime对象具有相同的日期、月份和年份,如何进行比较?PHP日期时间相等,php,datetime,Php,Datetime,如果两个DateTime对象具有相同的日期、月份和年份,如何进行比较? 问题是它们有不同的时/分/秒。使用DateTime对象没有很好的方法。所以你必须做,比方说,不太好的事情 $nDate1 = clone $date1; $nDate2 = clone $date2; //We convert both to UTC to avoid any potential problems. $utc = new DateTimeZone('UTC'); $nDate1->setTimezon
问题是它们有不同的时/分/秒。使用DateTime对象没有很好的方法。所以你必须做,比方说,不太好的事情
$nDate1 = clone $date1;
$nDate2 = clone $date2;
//We convert both to UTC to avoid any potential problems.
$utc = new DateTimeZone('UTC');
$nDate1->setTimezone($utc);
$nDate2->setTimezone($utc);
//We get rid of the time, and just keep the date part.
$nDate1->setTime(0, 0, 0);
$nDate2->setTime(0, 0, 0);
if ($nDate1 == $nDate2) {
//It's the same day
}
这会管用的,但就像我说的,这不好
另一方面,最近的经验告诉我,最好确保两个日期在同一时区,所以我添加了代码以防万一
if(date('dmY', $date1) == date('dmY', $date2))
你可以把它放在一个函数中
function compare_dates($date1, $date2){
if(date('dmY', $date1) == date('dmY', $date2))
return true ;
return false ;
}
是最有用的;) 那么:
$date1->format('Ymd') == $date2->format('Ymd');
:wq好的,请不要再投票了。OP明确了在不考虑时间的情况下比较两个日期的要求。对不起,我的疏忽。如果我应用date\u default\u timezone\u set('GMT'),而不是$nDate1->setTimezone,这足够了吗?我相信足够了,因为我刚才链接的问题就是这样。不,如果DateTime是用格式为'2020-04-23 20:30:20+0500'的字符串构造的,默认时区对它没有影响,你可能会遇到问题。为什么这个解决方案不好?@erisco不得不克隆对象并删除它们的时间部分以进行比较,这让我觉得很难看,很有必要,但很难看。Date希望第二个参数是整数,所以这不起作用,因为$date1和$date2是DateTime对象$date->getTimestamp()解决了这个问题。