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

Примеры и руководство по date_timestamp_get в PHP
Раздел: Дата и время
date_timestamp_get(DateTimeInterface $object): int

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

Функция date_timestamp_get() извлекает Unix-временную метку из объекта DateTimeInterface. Unix-время представляет собой количество секунд, прошедших с 1 января 1970 года по UTC (эпоха Unix).

Аргументы функции

Функция принимает единственный обязательный параметр:

  • object – объект, реализующий интерфейс DateTimeInterface (например, экземпляр класса DateTime или DateTimeImmutable).
Возвращаемое значение

Функция возвращает целое число (int), представляющее Unix-временную метку. В случае возникновения ошибки может возвращаться false.

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

Базовый пример

Получение метки из текущего времени.

$date = new DateTime('2023-12-25 15:30:00');
echo date_timestamp_get($date);
1703511000
Работа с часовыми поясами

Временная метка всегда независима от часового пояса, так как представляет собой момент в UTC.

$date = new DateTime('2023-12-25 15:30:00', new DateTimeZone('Europe/Moscow'));
$ts = date_timestamp_get($date);
echo $ts . '\n';
echo date('Y-m-d H:i:s', $ts);
1703507400
2023-12-25 12:30:00
Использование с DateTimeImmutable
$date = new DateTimeImmutable();
echo date_timestamp_get($date);
1690387256

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

DateTime::getTimestamp()

Метод объекта, выполняющий ту же операцию. Предпочтительнее в объектно-ориентированном стиле.

$date = new DateTime();
echo $date->getTimestamp();
strtotime()

Функция преобразует текстовое представление даты в Unix-время. Работает со строковыми данными, а не с объектами.

echo strtotime('2023-12-25 15:30:00');

Возвращает текущую Unix-метку. Не требует создания объекта DateTime для получения текущего времени.

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

Date timestamp get в Python

Метод timestamp() у объектов datetime возвращает float. Часовой пояс учитывается.

from datetime import datetime, timezone
dt = datetime(2023, 12, 25, 15, 30, tzinfo=timezone.utc)
print(dt.timestamp())
1703511000.0

Date timestamp get в Javascript

Метод getTime() объекта Date возвращает количество миллисекунд с эпохи. Результат нужно разделить на 1000 для сравнения с PHP.

let date = new Date('2023-12-25T15:30:00Z');
console.log(date.getTime());
1703511000000

Date timestamp get в MySQL

Функция UNIX_TIMESTAMP() возвращает Unix-время. Может принимать аргумент типа DATETIME.

SELECT UNIX_TIMESTAMP('2023-12-25 15:30:00');
1703511000

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

Передача неверного типа аргумента

Функция ожидает объект DateTimeInterface.

var_dump(date_timestamp_get('2023-12-25'));
Warning: date_timestamp_get() expects parameter 1 to be DateTimeInterface, string given
Ошибки с датами до эпохи Unix

Для дат до 1970-01-01 возвращается отрицательное число.

$date = new DateTime('1969-07-20');
echo date_timestamp_get($date);
-14184000
Потеря точности на 32-битных системах

На 32-битных системах максимальная дата ограничена 2038 годом.

Изменения в PHP 8

В PHP 8.0 функция date_timestamp_get() была перенесена в ядро PHP и стала доступна по умолчанию. Поведение функции осталось прежним. В PHP 8.1 и выше не было внесено изменений, влияющих на её работу.

Расширенные примеры

Сравнение временных меток

Временные метки удобны для сравнения моментов времени.

Пример php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-06-01');
$ts1 = date_timestamp_get($date1);
$ts2 = date_timestamp_get($date2);
if ($ts1 < $ts2) {
    echo 'Первая дата раньше';
}
Первая дата раньше
Расчет интервалов

Разница между метками в секундах.

Пример php
$start = new DateTime('09:00');
$end = new DateTime('17:30');
$diff = date_timestamp_get($end) - date_timestamp_get($start);
echo 'Рабочий день: ' . ($diff / 3600) . ' часов';
Рабочий день: 8.5 часов
Форматирование через временную метку

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

Пример php
$date = new DateTime('2023-12-25 15:30:00', new DateTimeZone('Europe/Moscow'));
$ts = date_timestamp_get($date);
echo gmdate('Y-m-d\TH:i:s\Z', $ts);
2023-12-25T12:30:00Z
Работа с микросекундами

Функция не возвращает микросекунды. Для них нужен метод format('U.u').

Пример php
$date = new DateTime();
$date->modify('+0.5 second');
echo date_timestamp_get($date) . '\n';
echo $date->format('U.u');
1690387256
1690387256.500000
Создание объекта из временной метки

Обратная операция с использованием DateTime::setTimestamp() или конструктора.

Пример php
$ts = 1703511000;
$date = new DateTime();
$date->setTimestamp($ts);
echo $date->format('Y-m-d H:i:s');
2023-12-25 15:30:00

PHP date_timestamp_get function comments

En
Date timestamp get Alias of DateTime::getTimestamp