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

Главные вкладки

Аватар пользователя vert4 vert4 16 сентября в 12:45

Приветствую!
Простая вроде задача, но...
Есть две даты, формат разный. Необходимо создать условие если одна дата больше другой то...
формат одной даты "value" => "2025-09-14"
формат другой даты "value" => "2025-09-18T00:00:00"
привожу оби даты к одному формату
strtotime($start_date) и strtotime ($hot_start) и, вроде, обе даты конвертятся в UNIX
но условие if (strtotime($start_date) > strtotime ($hot_start)) не работает ошибок не получаю просто игнорится.

Что может не правильно быть?.. Посоветуйте

Лучший ответ

Аватар пользователя vert4 vert4 16 сентября в 15:36

как говорится "сам дурак" )) нашел, что неправильная конструкция условия if значение если ложно нужно было в else поставить. Я думал, что это не обязательно. В итоге все заработало if (условие){что-то}else{другое что-то} и все работает.

Комментарии

Аватар пользователя OldWarrior OldWarrior 16 сентября в 14:49

vert4 wrote: и, вроде, обе даты конвертятся в UNIX

Как-то непонятно: что значит "вроде"? Либо конвертируются, либо нет. На входе - литерал, на выходе - целое число, это же просто проверить. Однако, ощущение, что сначала лучше привести к одному формату входную строку. Причём, сверяясь с допустимыми форматами: https://www.php.net/manual/ru/datetime.formats.php

В Друпале, кстати, можно использовать встроенный класс DrupalDateTime:

<?php
$date1 
= new \Drupal\Core\Datetime\DrupalDateTime('2025-01-01 10:00:00');
$date2 = new \Drupal\Core\Datetime\DrupalDateTime('2025-01-02 12:00:00');

if (

$date1 $date2) {
  
// $date1 меньше $date2
}
?>
Аватар пользователя vert4 vert4 16 сентября в 15:14

вроде, потому что сравнение дат происходит внутри функции, а я не знаю как посмотреть значение переменной даты там, но если подставить эту переменную даты в выводе ноды, то я получаю дату в формате UNIX, но я не знаю в какой формат эта переменная преобразуется в составе функции. Условие сравнения то не срабатывает. Не знаю как доступно объяснил. Спасибо за Ваш пример, попробую через DateTime
я пробовал, но возможно не правильно.. и опять же в Вашем примере даты одного формата ('2025-01-01 10:00:00') а это можно сравнивать напрямую. У меня же одна дата просто Y-m-d а вторая, я так понимаю, в RFC 3339
В любом случае, спасибо за коммент

Аватар пользователя vert4 vert4 16 сентября в 15:36

как говорится "сам дурак" )) нашел, что неправильная конструкция условия if значение если ложно нужно было в else поставить. Я думал, что это не обязательно. В итоге все заработало if (условие){что-то}else{другое что-то} и все работает.