PHP сравнить даты

Возможный дубликат:
php date compare

У меня есть дата, которую я беру из базы данных mySQL, которая выглядит так:

2011-06-20 

И я получаю дату текущего дня следующим образом:

 $todaydate = date('Ym-d'); 

Мне нужно знать, как сравнить два результата?

Как я могу сравнить даты и понять, например, если неделя передается из даты базы данных или месяца или года … и т. Д.?

Спасибо!!

Нет необходимости ставить эту нагрузку на PHP, когда MySQL имеет встроенные функции для этого уже. Вы должны взглянуть на DATEDIFF() MySQL:

DATEDIFF() возвращает expr1expr2 выраженное как значение в днях от одной даты к другой. expr1 и expr2 – это expr1 даты или даты и времени. В расчетах используются только части даты.

Примером двух дат, которые дают 7-дневную разницу, может быть:

 mysql> select datediff('2011-06-18','2011-06-25'); +-------------------------------------+ | datediff('2011-06-18','2011-06-25') | +-------------------------------------+ | -7 | +-------------------------------------+ 

Это означает, что первая дата произошла через 7 дней после первой даты; это за 7 дней до этого . Если вы разрешите использовать два аргумента, результат будет положительным. 7.

Как насчет использования UNIX_TIMESTAMP? Он использует концепцию прошедшего времени.

«Старый» способ сравнить две или более даты – это преобразовать в временную метку unix (секунды в float) с помощью функции strtotime (). Например:

 if((strtotime('2011-05-10') - strtotime('2011-05-01')) > 604800) { echo('A week has passed'); } if((strtotime('2011-06-10') - strtotime('2011-05-01')) > 2629743) { echo('A month has passed'); } 

Или «новым» способом является использование класса DateTime в комплекте с PHP 5.2 или новее. Посмотрите http://php.net/manual/en/book.datetime.php .

И, конечно, date_diff имеет множество примеров.

Вам нужно рассмотреть то, что вы точно ищете.

  • Вы хотите отфильтровать даты старше недели? Вы можете сделать это сравнение на SQL, и вы не нагружаете PHP сопоставлением дат.

  • Вы хотите разницу в дате? Опять же, я предлагаю поместить его в SQL и просто показать результат.

Это даст вам количество секунд между двумя датами:

 <?php $time = '2011-06-20'; $timeDiff = time() - strtotime($time); echo $timeDiff; ?> 

Вы можете разделить это значение на 86 400, чтобы получить количество дней и т. Д.