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
$date = new DateTimeImmutable();
echo date_timestamp_get($date);1690387256
Похожие функции в PHP
Метод объекта, выполняющий ту же операцию. Предпочтительнее в объектно-ориентированном стиле.
$date = new DateTime();
echo $date->getTimestamp();Функция преобразует текстовое представление даты в 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
Для дат до 1970-01-01 возвращается отрицательное число.
$date = new DateTime('1969-07-20');
echo date_timestamp_get($date);-14184000
На 32-битных системах максимальная дата ограничена 2038 годом.
Изменения в PHP 8
В PHP 8.0 функция date_timestamp_get() была перенесена в ядро PHP и стала доступна по умолчанию. Поведение функции осталось прежним. В PHP 8.1 и выше не было внесено изменений, влияющих на её работу.
Расширенные примеры
Временные метки удобны для сравнения моментов времени.
$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 'Первая дата раньше';
}Первая дата раньше
Разница между метками в секундах.
$start = new DateTime('09:00');
$end = new DateTime('17:30');
$diff = date_timestamp_get($end) - date_timestamp_get($start);
echo 'Рабочий день: ' . ($diff / 3600) . ' часов';Рабочий день: 8.5 часов
Использование результата со стандартными функциями работы со временем.
$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').
$date = new DateTime();
$date->modify('+0.5 second');
echo date_timestamp_get($date) . '\n';
echo $date->format('U.u');1690387256 1690387256.500000
Обратная операция с использованием DateTime::setTimestamp() или конструктора.
$ts = 1703511000;
$date = new DateTime();
$date->setTimestamp($ts);
echo $date->format('Y-m-d H:i:s');2023-12-25 15:30:00