Сравнение дат в PHP - PullRequest
       19

Сравнение дат в PHP

1 голос
/ 08 августа 2011

В настоящее время у меня есть дата, которая хранится в моей базе данных SQL как VARCHAR из 255 символов. Я объявил эту строку как

   //within an object...
   $date = date(DATE_RFC822);

Теперь, позже в кодировании, я понимаю, что мне нужно сравнить даты друг с другом. Моя первоначальная, очень наивная попытка выглядела примерно так:

if(object_1->date > object_2->date){
 //do this that assumes that object_1 was created at a later date than object_2
}else{
 continue;
}

Хотя это нормально работало для разных времен одного и того же дня; использование кода через неделю стало показывать значительные ошибки.

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

strtotime() преобразует строку в unix time (целое число), которое можно легко сравнить с другими значениями unix time. Если вы используете PHP 5.2.8 или выше, вы также можете использовать класс DateTime , который сравнительно легко сравнить (см. этот вопрос для получения дополнительной информации)

1 голос
/ 08 августа 2011

Нельзя сравнивать даты в формате DATE_RFC822 друг с другом.Вы должны использовать поля Date или DateTime в MySQL и метки времени DateTime или Unix в PHP.Можно безопасно использовать строку DATE_RFC822 в конструкторе PHP DateTime или в strtotime ().(Тем не менее, если вы используете Date или DateTime в MySQL, вы также можете сортировать по дате и искать по дате и т. Д.)

Объекты PHP DateTime можно сравнивать друг с другом, как обычные переменные PHP, так что вы можете сделать $date1 < $date2, чтобы определить, стоит ли $date1 до $date2.

...