Date timestamp set: примеры (PHP)

Функция date_timestamp_set: работа с временными метками в PHP
Раздел: Дата и время
date_timestamp_set(DateTime $object, int $timestamp): DateTime

Описание функции date_timestamp_set

Функция date_timestamp_set устанавливает дату и время для объекта DateTime, используя метку времени Unix. Эта функция изменяет существующий объект DateTime.

Синтаксис
public DateTime::setTimestamp(int $timestamp): DateTime
date_timestamp_set(DateTime $object, int $timestamp): DateTime
Аргументы
  • object - обязательный параметр. Объект класса DateTime, возвращаемый функцией date_create().
  • timestamp - обязательный параметр. Метка времени Unix, представляющая количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC.
Возвращаемое значение

Функция возвращает модифицированный объект DateTime для цепочки вызовов или false в случае возникновения ошибки.

Короткие примеры использования

Пример 1: Установка конкретной временной метки
$date = date_create();
$newDate = date_timestamp_set($date, 1640995200);
echo date_format($newDate, 'Y-m-d H:i:s');
2022-01-01 00:00:00
Пример 2: Использование метода объекта
$date = new DateTime();
$date->setTimestamp(1672531200);
echo $date->format('d.m.Y H:i');
01.01.2023 00:00
Пример 3: Установка текущего времени
$date = date_create('2020-01-01');
$date->setTimestamp(time());
echo $date->format('Y-m-d H:i:s');
2023-11-15 14:30:25

Похожие функции в PHP

DateTime::setTime

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

DateTime::setDate

Устанавливает год, месяц и день. Используется для изменения даты без влияния на время.

DateTime::modify

Изменяет временную метку, добавляя или вычитая интервал в формате строки. Более гибкий метод для сложных операций.

date_create_from_format

Создает объект DateTime из строки с заданным форматом. Альтернатива при работе со строками определенного формата.

Альтернативы в других языках программирования

Python: datetime.fromtimestamp()
from datetime import datetime
dt = datetime.fromtimestamp(1640995200)
print(dt.strftime('%Y-%m-%d %H:%M:%S'))
2022-01-01 00:00:00
JavaScript: Date.setTime()
let date = new Date();
date.setTime(1640995200000);
console.log(date.toISOString());
2022-01-01T00:00:00.000Z
MySQL: FROM_UNIXTIME()
SELECT FROM_UNIXTIME(1640995200) AS datetime;
2022-01-01 00:00:00

Типичные ошибки

Ошибка 1: Передача неверного типа аргумента
$date = date_create();
$result = date_timestamp_set($date, 'не число');
var_dump($result);
Warning: date_timestamp_set() expects parameter 2 to be int, string given
Ошибка 2: Использование неверной временной метки
$date = date_create();
$date->setTimestamp(-9999999999);
echo $date->format('Y-m-d');
Invalid date
Ошибка 3: Попытка использовать функцию с не объектом DateTime
$date = '2023-01-01';
$result = date_timestamp_set($date, 1640995200);
Fatal error: Uncaught TypeError: date_timestamp_set(): Argument #1 ($object) must be of type DateTime, string given

Изменения в последних версиях PHP

В PHP 8.0.0 функция date_timestamp_set теперь возвращает экземпляр DateTime, а не DateTimeImmutable. В предыдущих версиях сигнатура отличалась.

До PHP 8.0.0 функция могла возвращать null в случае неудачи, но теперь всегда возвращает DateTime или вызывает исключение TypeError при неверных аргументах.

В PHP 7.1.0 было добавлено исключение DateRangeError для временных меток вне допустимого диапазона 32-битных систем.

Расширенные примеры использования

Пример 1: Создание объекта на основе метки с микросекундами
$date = date_create();
$timestampWithMicro = 1640995200 + 0.5;
$date->setTimestamp((int)$timestampWithMicro);
$date->modify('+' . ($timestampWithMicro - (int)$timestampWithMicro) . ' seconds');
echo $date->format('Y-m-d H:i:s.u');
2022-01-01 00:00:00.500000
Пример 2: Пакетная обработка временных меток
$timestamps = [1640995200, 1672531200, 1704067200];
$results = [];
foreach ($timestamps as $ts) {
    $date = date_create();
    $date->setTimestamp($ts);
    $results[] = $date->format('d.m.Y');
}
print_r($results);
Array
(
    [0] => 01.01.2022
    [1] => 01.01.2023
    [2] => 01.01.2024
)
Пример 3: Сравнение объектов DateTime после изменения
$originalDate = date_create('2023-01-15');
$modifiedDate = clone $originalDate;
$modifiedDate->setTimestamp(1640995200);

$interval = $originalDate->diff($modifiedDate);
echo 'Разница: ' . $interval->format('%R%a дней');
Разница: -379 дней
Пример 4: Работа с временными зонами
$date = date_create('now', new DateTimeZone('America/New_York'));
$date->setTimestamp(1640995200);
echo $date->format('Y-m-d H:i:s T');
2021-12-31 19:00:00 EST

PHP date_timestamp_set function comments

En
Date timestamp set Alias of DateTime::setTimestamp