lightalex
@lightalex

Как сравнить две даты?

Здравствуйте, коллеги!
Всегда сравнивал даты типа datetime из базы данных следующим образом:
$str_date = "2001-01-01 15:20:20";
$date_elems = explode(" ",$str_date);
$date = explode("-", $date_elems[0]);
$time = explode(":", $date_elems[1]); 
$date1 =  mktime($time[0], $time[1],$time[2], $date[1],$date[2], $date[0]);

$str_date = "2014-11-23 21:30:00";
$date_elems = explode(" ",$str_date);
$date = explode("-", $date_elems[0]);
$time = explode(":", $date_elems[1]); 
$date2 =  mktime($time[0], $time[1],$time[2], $date[1],$date[2], $date[0]);

if ($date1>$date2) ...

Возник вопрос - а правильный ли этот подход?
Может есть какой-нибудь более простой и менее громоздкий способ?
  • Вопрос задан
  • 1613 просмотров
Решения вопроса 4
27cm
@27cm
TODO: Написать статус
Даты и время именно в таком формате можно сравнивать через strcmp.
$date1 = "2001-01-01 15:20:20";
$date2 = "2014-11-23 21:30:00";

if (strcmp($date1, $date2) < 0) {
    // ...
}


Или даже так:
if ($date1 < $date2) {
    // ...
}
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
$str_date = "2001-01-01 15:20:20";
$date1 = new \Datetime($str_date);
$str_date = "2014-11-23 21:30:00";
$date2 = new \Datetime($str_date);

if ($date1>$date2) {
//
}
Ответ написан
@An_cher89
Фрилансер
Можно создать две даты с помощью php.net/manual/ru/datetime.createfromformat.php

а потом просто сравнить два полученных объекта Datetime
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы