Как сравнить две даты в php и echo более новые?

Как сравнить две даты в php и echo более новые?

Мои даты даны в следующем формате: date("F j, Y, g:ia"); которые дают нам August 12, 2011, 9:45 am .

Мои даты следующие:

  • date 1 $created
  • дата 2 $updated / если обновленная информация не была сделана, значение 0000-00-00 00:00:00

Любое предложение очень ценится.

 $date1 = new DateTime("August 12, 2011, 9:45 am"); $date2 = new DateTime("August 12, 2011, 10:45 am"); $never_date = ($date1<$date2)?$date1:$date2; echo $never_date->format("F j, Y, g:ia"); 

Но обратите внимание, что 0000-00-00 00:00:00 является допустимым входом для DateTime() , но не будет работать должным образом. Это приведет к -0001-11-30 00:00:00 (по крайней мере для PHP 5.3-VC9-nts на Win7 x64).

Обновление: я вижу два варианта для работы, которые 0000-00-00 00:00:00

  • Разрешить нули в этом столбце в вашей БД и удалить DEFAULT 0000-00-00 00:00:00 .
  • Проверьте, $updated == '0000-00-00 00:00:00' ли $updated == '0000-00-00 00:00:00' и если да, просто верните $created :
  • Проверьте, $updated == '' ли $updated == '' (пустая строка), и если это так возвращает $created :

     if ($updated=='0000-00-00 00:00:00' || $updated=='') $never_date = $created; else $never_date = ($created<$updated)?$created:$updated; 

Я сомневаюсь, что это правильное поведение, чтобы показать 0000-00-00 00:00:00 для записи, которая никогда не обновлялась.

Преобразование даты в метку времени:

 if (strtotime($created) > strtotime($updated)) { // ... } else { // ... }