Большинство дат в ORM D7 являются объектами класса BitrixMainTypeDateTime. Для сокращения используем:
Объект Datetime является практически аналогом встроенного в PHP класса DateTime, но от него не наследуется. Объект Битрикс-класса можно получить из объекта PHP-класса с помощью метода createFromPhp или из timestamp с помощью createFromTimestamp:
Также есть конструкторы:
Из объекта можно получить представление в виде timestamp:
в виде строки в формате текущего сайта:
в произвольном формате (фактически обёртка над DateTime::format):
Метод add реализует сложение и вычитание дат, можно указывать смещение словами years, months, days, weeks, hours, minutes, seconds и знаками +/-:
Метод add изменяет объект, здесь для наглядности приведены результаты вызова add с начального состояния $objDateTime.
Также в add можно указывать смещение в формате DateInterval (но буква P в начале строки необязательна):
При указании смещения следует указывать периоды, от большей единицы до меньшей (например, года, месяцы, часы).
Фильтрация по дате активности
Для $arFilter использовать DATE_ACTIVE_FROM , DATE_ACTIVE_TO , подробнее
Приведение даты в PHP-формат
Элементы имеют следующие параметры:
Разница в днях между датами
Разница в днях между датой элемента и текущей датой:
Возможно, что битрикс хранит дату записи в одной зоне, а текущее время new DateTime() — в другой. Поэтому разница только что созданной записи и текущего времени таким образом может быть не равна нулю!
Округление идет в меньшую сторону, т.е. разница в 23 часа 59 мин 59 сек = 0 дней. Можно сказать, что если $date->diff($now)->format(‘%a’) >= 1 , прошло минимум 24 часа.
Точное значение в годах, месяцах, днях, часах, минутах и секундах:
Разница в секундах — именно не по секундам, а общая в секундах:
Отмотать дату
Отмотать дату на начало предыдущего дня ( $numDays = 1 ) или позавчера ( $numDays = 2 ), причем с округлением до полуночи:
Начало месяца и начало квартала
Дата начала месяца и квартала для текущей даты.
Работа с датой и временем средствами классов "BitrixMainTypeDate" и "BitrixMainTypeDateTime".
Класс "BitrixMainTypeDateTime" является расширением класса "BitrixMainTypeDate".
Создание объекта "BitrixMainTypeDateTime" из формата сайта:
Создание объекта "BitrixMainTypeDateTime" из произвольного формата:
Создание объекта "BitrixMainTypeDateTime" из произвольного формата с указанием часового пояса (часовой пояс указывается в формате php DateTimeZone):
Получение формата даты/времени текущего сайта или настроек в админ. части:
Создание объекта "BitrixMainTypeDateTime" из unix timestamp:
Создание объекта "BitrixMainTypeDateTime" из php DateTime:
Создание объекта "BitrixMainTypeDateTime" из времени заданного строкой:
Время в формате текущего сайта:
Время в формате unix timestamp:
Время в произвольном формате:
Вывод времени в формате текущего сайта с проверкой объекта:
Вывод времени в формате, заданном с помощью региональных настроек:
Также можно получить формат даты/времени из региональных настроек (в формате битрикс):
Или в формате php:
Сложение и вычитание дат с использованием читаемого формата:
Сложение и вычитание дат с использованием формата DateInterval:
Получение текущей временной зоны объекта:
Установка текущей временной зоны объекта:
Установка временной зоны по умолчанию:
Создание объекта "BitrixMainTypeDateTime" из локального времени пользователя с переводом в глобальные настройки сервера:
Время с учетом настроек пользователя:
Перевести формат времени из формата битрикс в формат php: