Документация для разработчиков
Темная тема

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(), 
);


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Алексей Егурнов
Сообщение не промодерировано, возможны ошибки и неточности.
:D  
2
Вячеслав Докукин
Сообщение не промодерировано, возможны ошибки и неточности.
При сохранении сущности 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
иначе будет ошибка

© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх