@JohnDidact
Нуб во всём

Почему правильно сравниваются СТРОКИ даты?

Код на PHP
'2021-02-21 22:04:47' < '2021-02-23 14:15:50'; // возвращает true

Вопрос простой: Почему? Да, с человеческой точки зрения - всё правильно. Но я ведь сравниваю просто строки, не разбираю эту дату, не привожу в unixtime и не сравниваю это значение. Насколько я знал, при сравнение строк, значения приводятся в тип int, но если явно привести их в тип int, то они будут равны... Как так получается?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
насколько я знаю строки сравниваются посимвольно (char коды). и тут чар-код "1" будет меньше чем "2".

до первого вхождения. как только удается определить какая строка меньше - дальше проверка не производится. в вашем случае она останавливается на последнем символе дня.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Awilum
@Awilum
Частный разработчик, ментор и преподаватель курсов
Я бы сравнивал даты вот так:

$date1 = strtotime('2021-02-21 22:04:47');
$date2 = strtotime('2021-02-23 14:15:50'); 

var_dump($date1 < $date2);
var_dump($date1 == $date2);
var_dump($date1 > $date2);


вы можете сравнивать так как вы сейчас сравниваете строки, но у вас могут быть всплыть проблемы если у дат будет разный формат
Ответ написан
@aleks-th
Ну так потому что именно эти конкретные строки так удачно сравнились )
9 символ действительно больше во втором случае

Сравни другие и увидешь что не всегда результат совпадет с правильным ответом.
Ответ написан
Ваш ответ на вопрос

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

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