DateTime
Описание
DateTime - Класс для работы с датами и временем. Большинство дат в ядре - объекты этого класса. Сам класс - расширение класса Date.
Обращается к пространству имён:
Объект класса \Datetime
является практически аналогом встроенного в PHP класса \DateTime, но от него не наследуется. Объект класса \DateTime
можно получить из объекта PHP-класса с помощью метода \Bitrix\Main\Type\DateTime::createFromPhp
или из timestamp с помощью \Bitrix\Main\Type\DateTime::createFromTimestamp
:
$objDateTime = DateTime::createFromPhp(new \DateTime('2000-01-01')); $objDateTime = DateTime::createFromTimestamp(1346506620);
Конструкторы:
// Текущее время: $objDateTime = new DateTime(); // Из строки в формате текущего сайта $objDateTime = new DateTime("25.12.2012 12:30:00"); // Из строки с указанием формата: $objDateTime = new DateTime("2007-05-14 12:10:00", "Y-m-d H:i:s");
Методы
Метод | Описание | С версии |
---|---|---|
createFromTimestamp | Метод создаёт объект DateTime из временной метки Unix. | 15.0.7 |
createFromPhp | Метод создаёт объект DateTime объекта \DateTime PHP. | |
createFromUserTime | Метод создаёт DateTime объект из локального времени пользователя с использованием глобальных настроек временной зоны и региональных настроек по умолчанию. | 14.0.18 |
getTimeZone | Метод возвращает объект временной зоны | |
setDefaultTimeZone | Метод устанавливает временную зону по умолчанию. | 14.0.18 |
setTimeZone | Метод устанавливает объект временной зоны. | 14.0.18 |
toString | Метод конвертирует дату в строку с использованием региональных настроек и настроек глобальных временных зон. | |
toUserTime | Метод изменяет время с серверного на время пользователя с использованием настроек глобальных временных зон. | 14.0.18 |
Примеры
Как из объекта получить представление в виде timestamp:
echo $objDateTime->getTimestamp();
Как из объекта получить представление в виде строки в формате текущего сайта:
echo $objDateTime->toString();
Как из объекта получить представление в произвольном формате (используя \Bitrix\Main\Type\DateTime::format
):
echo $objDateTime->format("Y-m-d H:i:s");
Можно реализовать сложение и вычитание дат. Для этого нужно указать смещение словами: years
, months
, days
, weeks
, hours
, minutes
, seconds
и знаками +/-
:
- пример с использованием стандартного класса PHP
DateTime()
:$objDateTime = new DateTime(); $objDateTime->add(DateInterval::createFromDateString("-1 day")); echo $objDateTime->format("d.m.Y H:i:s");
- пример с использованием класса
\Bitrix\Main\Type\DateTime()
:$objDateTime = new \Bitrix\Main\Type\DateTime(); $objDateTime->add("-1 day"); echo $objDateTime->format("d.m.Y H:i:s");
Можно указывать смещение в формате DateInterval (но буква P в начале строки необязательна):
$objDateTime = new DateTime("01.01.2012 00:00:00"); // "2012-01-01 00:00:00" $objDateTime->add("7M5DT2M"); // "2012-08-06 00:02:00" $objDateTime->add("-2YT10M"); // "2009-12-31 23:50:00"
При указании смещения следует указывать периоды, от большей единицы до меньшей (например, года, месяцы, часы).
Время из формата текущего сайта:
$date = new \Bitrix\Main\Type\DateTime("16.08.2014 15:30:10"); $arFields = Array( 'DATE_START' => \Bitrix\Main\Type\DateTime::createFromUserTime("16.08.2014 15:30:10"); );
Фильтр по datetime:
//для текущей даты $filter = array( "<DATE_START" => new \Bitrix\Main\Type\DateTime(), ">DATE_END" => new \Bitrix\Main\Type\DateTime(), );
Сообщение не промодерировано, возможны ошибки и неточности.
|
|
Сообщение не промодерировано, возможны ошибки и неточности.
|
При сохранении сущности ORM
$cert = CertTable::createObject(); $cert->set('ORDER_DATE_INSERT', $arrOrder['DATE_INSERT']); $result = $cert->save(); if (!$result->isSuccess()) { $this->addError(new Error($result->getErrorMessages())); return null; } $id = $result->getId(); Если сохраняем поле с типом datetime которое указано в getMap сущности например так new DatetimeField('ORDER_DATE_INSERT', ['title' => Loc::getMessage('CERT_TABLE_TITLE_ORDER_DATE_INSERT'), 'default_value' => new DateTime ]), То следует передавать не строку '2024-05-13 17:52:01' а именно объект DateTime |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.