@abricos07

Особенности сравнение дат в php?

Понимаю, что не совсем корректное сравнение. Хочется узнать, почему именно получился такой результат.

(date('01.01.2016') < date('25.12.2015')) === true

Почему в результате выдает, что первая дата меньше второй? Я понимаю, что он скорее всего приводит эти строки к какому-то скалярному типу. Но к какому именно? И почему?
  • Вопрос задан
  • 12691 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
string date ( string $format [, int $timestamp = time() ] )

Поскольку вы неправильно используете функцию date(), сравниваются просто строки. Строки сравниваются посимвольно. Ноль меньше, чем два, поэтому сравнение немедленно возвращает true.

Правильно сравнивать даты так:
$first = DateTime::createFromFormat('d.m.Y', '01.01.2016');
$second = DateTime::createFromFormat('d.m.Y', '25.12.2015');
var_dump($first < $second);

Или так:
var_dump(strtotime('01.01.2016') < strtotime('25.12.2015'));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
первый параметр - это формат даты.
все, что не входит в известные модификаторы - интерпретируется как число.
при строковом сравнении второе больше первого...

попробуй strtotime и формат даты - YYYY-MM-DD
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы