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

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 и знаками +/-:

$objDateTime = new DateTime("01.01.2012 00:00:00"); // "2012-01-01 00:00:00"
$objDateTime->add("1 day"); // "2012-01-02 00:00:00"
$objDateTime->add("-1 day"); // "2011-12-31 00:00:00"
$objDateTime->add("3 months - 5 days + 10 minutes"); // "2012-03-27 00:10:00"

Можно указывать смещение в формате 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(), 
);


© «Битрикс», 2001-2024, «1С-Битрикс», 2024