DateTimeImmutable::setTimestamp
(PHP 5 >= 5.5.0)
DateTimeImmutable::setTimestamp — Sets the date and time based on an Unix timestamp
Description
Like DateTime::setTimestamp() but works with DateTimeImmutable.
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с датой и временем
- Дата и Время
- Функция DateTimeImmutable::add() - Добавляет указанное количество дней, месяцев, лет, часов, минут и секунд.
- Функция DateTimeImmutable::__construct() - Возвращает новый объект DateTimeImmutable
- Функция DateTimeImmutable::createFromFormat() - Возвращает новый объект DateTimeImmutable, отформатированный согласно переданному формату
- DateTimeImmutable::createFromMutable
- Функция DateTimeImmutable::getLastErrors() - Возвращает предупреждения и ошибки
- Функция DateTimeImmutable::modify() - Изменяет временную метку
- Функция DateTimeImmutable::__set_state() - Обработчик __set_state
- Функция DateTimeImmutable::setDate() - Устанавливает дату
- Функция DateTimeImmutable::setISODate() - Устанавливает дату в формате ISO
- Функция DateTimeImmutable::setTime() - Устанавливает время
- Функция DateTimeImmutable::setTimestamp() - Устанавливает дату и время по переданной временной метке Unix
- Функция DateTimeImmutable::setTimezone() - Устанавливает временную зону
- Функция DateTimeImmutable::sub() - Вычитает переданное количество дней, месяцев, лет, часов, минут и секунд
Коментарии
This function will not change the value of the DateTimeImmutable object as the method name might suggest. The object, after all, immutable.
<?php
$dti = new DateTimeImmutable();
echo $dti->getTimestamp(); // e.g. 123456789
$dti->setTimestamp(987654321);
echo $dti->getTimestamp(); // 123456789
$x = $dti->setTimestamp (987654321);
echo $x->getTimestamp(); // 987654321
?>
While modifying Datetime with the timezone, the user should be aware that changing the timestamp using "@".\time() is not the same as changing the timestamp using setTimestamp().
$now = new \DateTimeImmutable('August 30, 2023 09:00:00 GMT+01');
$origin = $now->getTimestamp(); // 1693382400
$usingAt = $now->modify('@'.$now->getTimestamp())->getTimestamp(); // 1693378800
$usingSetTimestamp = $now->setTimestamp($now->getTimestamp())->getTimestamp(); // 1693382400
var_dump($usingAt === $origin); // false
var_dump($usingSetTimestamp === $origin); // true