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

Товарищи не пойму в чем дело. Вроде банальная штука сравнение дат. Но результат бывает разный. Мне нужно сравнить полученную дату с текущей. Если полученная дата уже прошла, то время для игры истекло. Если полученная дата еще не настала то время игры еще активно. Что я сделал

if($lotData['fdate_end']<=date("d.m.Y H:s")){
  echo "Время истекло";
}else{
  echo "Время есть";
}

Вроде как все нормально но когда получаю такую дату 22.04.2022 23:00 и сравниваю с текущей, то пишет что Время есть. Хотя это время уже прошло.

Тогда решил сделать так

if(time($lotData['fdate_end'])<=time(date("d.m.Y H:s"))){
    echo "Время истекло";
}else{
    echo "Время есть";
}

В таком случае когда получаю дату 22.04.2022 23:00 и сравниваю с текущей пишет что Время истекло(Как и нужно). Но когда получаю такую дату 19.07.2022 23:59 и сравниваю с текущей датой, тоже пишет что время истекло, хотя это полученное время еще не настало и должно было вывестись Время есть.

Что не так товарищи?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Как в комментариях отметили: Ваш первый код сравнивает не даты, он сравнивает строки.

Можно использовать пару способов сравнения дат:

  1. Для каждой даты использовать strtotime и сравнивать их

  2. Для каждой даты использовать DateTime и сравнивать их. DateTime удобно использовать в плане, что можно задать любой формат, а также есть нативные методы получения например разницы между интервалами, вычитать даты и пр.

→ Ссылка