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