@JohnDidact
Нуб во всём

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

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

Вопрос простой: Почему? Да, с человеческой точки зрения - всё правильно. Но я ведь сравниваю просто строки, не разбираю эту дату, не привожу в unixtime и не сравниваю это значение. Насколько я знал, при сравнение строк, значения приводятся в тип int, но если явно привести их в тип int, то они будут равны... Как так получается?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 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 символ действительно больше во втором случае

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 20:57
3000 руб./за проект
24 апр. 2024, в 20:35
5000 руб./за проект