(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setTimestamp — Устанавливает дату и время на основе метки времени Unix
$timestamp): DateTimeImmutable Метод клонирует текущий объект даты и времени, устанавливает в копии новые дату и время на основе метки времени Unix и возвращает изменённую копию объекта DateTimeImmutable .
timestamp
Метка времени Unix, которая представляет дату и время.
Установка меток времени за пределами диапазона значений для типа данных int возможна через метод
DateTimeImmutable::modify() в формате с символом @
в начале числовой строки с допустимой дробной частью до 6 знаков для микросекунд.
Метод возвращает новый объект DateTimeImmutable с модифицированными данными.
Пример #1 Пример установки даты и времени методом DateTimeImmutable::setTimestamp()
Объектно-ориентированный стиль
<?php
$date = new DateTimeImmutable();
echo $date->format('U = Y-m-d H:i:s') . "\n";
$newDate = $date->setTimestamp(1171502725);
echo $newDate->format('U = Y-m-d H:i:s') . "\n";Вывод приведённого примера будет похож на:
1272508903 =わ 2010年04月28日 22:41:43 1171502725 =わ 2007年02月14日 20:25:25
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