PHP Velho Oeste 2024

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_getLiefert den Unix-Zeitstempel

Beschreibung

Objektorientierter Stil

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

Prozeduraler Stil

Gibt den Unix-Zeitstempel zurück.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Gibt den Unix-Zeitstempel zurück, der das Datum darstellt.

Fehler/Exceptions

Wenn der Zeitstempel nicht als Integer dargestellt werden kann, wird ein DateRangeError geworfen. Vor PHP 8.3.0 wird ein ValueError geworfen und vor PHP 8.0.0 wurde in diesem Fall false zurückgegeben. Wenn DateTimeInterface::format() mit dem Format U verwendet wird, kann der Zeitstempel trotzdem als String abgerufen werden.

Changelog

Version Beschreibung
8.3.0 Die Exception für das Verlassen eines Wertebereichs (out-of-range) heißt nun DateRangeError.
8.0.0 Diese Funktionen geben bei einem Fehler nicht mehr false zurück.

Beispiele

Beispiel #1 DateTime::getTimestamp()-Beispiel

Objektorientierter Stil

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

Prozeduraler Stil

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

Oben gezeigte Beispiele erzeugen eine ähnliche Ausgabe wie:

1272509157

Wenn der Zeitstempel mit einer Auflösung im Milli- oder Mikrosekundenbereich benötigt wird, kann die Funktion DateTimeInterface::format() verwendet werden.

Beispiel #2 Auslesen des Zeitstempels mit einer Auflösung im Milli- und Mikrosekundenbereich

Objektorientierter Stil

<?php
$date
= new DateTimeImmutable();
$milli = (int)$date->format('Uv'); // Zeitstempel in Millisekunden
$micro = (int)$date->format('Uu'); // Zeitstempel in Mikrosekunden

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

Oben gezeigte Beispiele erzeugen eine ähnliche Ausgabe wie:

1674057635586
1674057635586918

Siehe auch

add a note add a note

User Contributed Notes 3 notes

up
37
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
33
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
-6
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