DateTimeInterface::getTimestamp

DateTimeImmutable::getTimestamp

DateTime::getTimestamp

date_timestamp_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTimeInterface::getTimestamp -- DateTimeImmutable::getTimestamp -- DateTime::getTimestamp -- date_timestamp_getВозвращает временную метку Unix

Описание

Объектно-ориентированный стиль

public DateTimeInterface::getTimestamp(): int
public DateTimeImmutable::getTimestamp(): int
public DateTime::getTimestamp(): int

Процедурный стиль

Возвращает временную метку Unix.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает временную метку Unix для указанной даты.

Ошибки

Если не получится представить временную метку целым числом (int), будет выброшено исключение DateRangeError. До PHP 8.3.0 выбрасывалось исключение ValueError. А до PHP 8.0.0 возвращалось логическое значение false. При этом метку времени можно получить в виде строки (string), вызвав метод DateTimeInterface::format() с параметром форматирования U.

Список изменений

Версия Описание
8.3.0 Теперь при выходе за пределы диапазона будет выброшено исключение DateRangeError.
8.0.0 Функции больше не возвращают значение false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования DateTime::getTimestamp()

Объектно-ориентированный стиль

<?php
$date
= new DateTimeImmutable();
echo
$date->getTimestamp();
?>

Процедурный стиль

<?php
$date
= date_create();
echo
date_timestamp_get($date);
?>

Вывод приведённых примеров будет похож на:

1272509157

Если необходимо получить метку времени с миллисекундами или микросекундами, можно использовать функцию DateTimeInterface::format().

Пример #2 Получение метки времени с милли- и микросекундами

Объектно-ориентированный стиль

<?php
$date
= new DateTimeImmutable();
$milli = (int)$date->format('Uv'); // Метка времени с миллисекундами
$micro = (int)$date->format('Uu'); // Метка времени с микросекундами

echo $milli, "\n", $micro, "\n";
?>

Вывод приведённых примеров будет похож на:

1674057635586
1674057635586918

Смотрите также

add a note add a note

User Contributed Notes 3 notes

up
36
heiccih at gmail dot com
10 years ago
In 32-bit system the unix timestamp will overflow if the date goes beyond year 2038 and this method will return false. In 64-bit systems this function will still work as intended. For more information please see http://en.wikipedia.org/wiki/Year_2038_problem.
up
36
Justin Heesemann
13 years ago
Note that for dates before the unix epoch getTimestamp() will return false, whereas format("U") will return a negative number.

<?php
$date
= new DateTime("1899-12-31");
// "-2209078800"
echo $date->format("U");
// false
echo $date->getTimestamp();
?>
up
-1
Julien Bornstein
3 years ago
Please note that DateTime::gettimestamp() will return an integer, but DateTime::format("U") will return a string.

timestamp must always be typed as int because in PHP, timestamps are integers.

eg:
- strftime ( string $format [, int $timestamp = time() ] ) : string
- time() // return int
- ...

So IMHO, as PHP becomes more and more a typed language, avoid using DateTime::format("U") to avoid this kind of errors "strftime() expects parameter 2 to be int, string given"
To Top