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

у меня есть две даты, обе string, нужно их сравнить, формат у обеих такой: 01.01.17
переменная $dateElement хранит дату создания элемента(элемент массива)
переменная $dateNow хранит сегодняшнее число
эти две переменные преобразуются в метку времени unix
$dateElement = strtotime($arResult['DISPLAY_ACTIVE_FROM']);
$dateNow = strtotime(date("d.m.y", time()));
if($dateElement < $dateNow) echo "yes";

супер, теперь у них тип int и я думала, что сравнить будет легко, но ф-ция strtotime трансформирует эти даты в это:
24.03.17 - 1491523397
06.04.17 - 1491458657
соответственно, первая дата будет больше и моего "yes" я не увижу. почему? что я упускаю? где ошиблась?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@MrTimon
Я бы посоветовал переделать формат даты на Y-m-d и тогда переводить в метку времени unix. Тогда получиться так:

list($d,$m,$y) = explode('.', $arResult['DISPLAY_ACTIVE_FROM']);
$dateElement = strtotime(implode('-', array('20'.$y,$m,$d)) );
$dateNow = strtotime('now');
if($dateElement < $dateNow) echo "yes";


Должно сработать. Только там обратите внимание на год. я поставил 20 перед $y там соответственно должно быть 19 если дата прошлого века.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Это что такое? Это кто сделал? strtotime(date("d.m.y", time()));
Видимо так надо было:
strtotime('now');
тогда будет int
Ответ написан
Ваш ответ на вопрос

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

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