PHP DateTime равенство - PullRequest
       3

PHP DateTime равенство

3 голосов
/ 02 сентября 2010

Как можно сравнить, если два объекта DateTime имеют один и тот же день, месяц и год?Проблема в том, что у них разные часы / минуты / секунды.

Ответы [ 3 ]

2 голосов
/ 02 сентября 2010

Нет хорошего способа сделать это с объектами 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
}

Это будет работать, но, как я уже сказал, это нехорошо.

Кстати, недавний опыт подсказывает, что всегда лучше убедиться, что обе даты находятся в одном часовом поясепоэтому я добавил код на всякий случай.

0 голосов
/ 09 февраля 2013

Как насчет:

$date1->format('Ymd') == $date2->format('Ymd');

: WQ

0 голосов
/ 03 сентября 2010
if(date('dmY', $date1) == date('dmY', $date2))

Вы можете поместить его в функцию ...

function compare_dates($date1, $date2){
  if(date('dmY', $date1) == date('dmY', $date2))
    return true ;

  return false ;
}

наиболее полезно;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...