Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 - Fatal编程技术网

PHP日期时间相等

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对象具有相同的日期、月份和年份,如何进行比较?
问题是它们有不同的时/分/秒。

使用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()解决了这个问题。