W3docs

date_timestamp_get()

date_timestamp_get() extrahiert den Unix-Timestamp aus einem DateTime-Objekt in PHP. Erfahren Sie Syntax, Zeitzonenwirkung und praktische Anwendungen.

Einführung

Datums- und Zeitfunktionen sind ein wesentlicher Bestandteil von Programmiersprachen. In PHP müssen Entwickler häufig das aktuelle Datum und die aktuelle Uhrzeit abrufen oder Operationen auf Datums- und Zeitwerten durchführen. Die Funktion date_timestamp_get() ist eine solche Funktion, die verwendet wird, um den Unix-Timestamp aus einem DateTime-Objekt zu extrahieren. In diesem Artikel untersuchen wir die Funktion date_timestamp_get() im Detail und verstehen, wie sie funktioniert.

date_timestamp_get() verstehen

Die Funktion date_timestamp_get() ist eine eingebaute PHP-Funktion, die den Unix-Timestamp aus einem DateTime-Objekt extrahiert. Ein Unix-Timestamp ist eine einzelne Zahl, die einen Zeitpunkt repräsentiert: die Anzahl der Sekunden, die seit dem 1. Januar 1970, 00:00:00 UTC (der „Unix-Epoche") vergangen sind.

Ein Timestamp ist immer eine UTC-basierte Zahl. Die Zeitzone des eingegebenen DateTime-Objekts wird verwendet, um den Wert zu berechnen, aber der Timestamp selbst speichert keine Zeitzone — zwei DateTime-Objekte, die denselben Zeitpunkt in verschiedenen Zeitzonen beschreiben, geben den identischen Timestamp zurück.

Syntax

date_timestamp_get(DateTimeInterface $object): int
  • $object — eine Instanz von DateTime oder DateTimeImmutable (alles, was DateTimeInterface implementiert). Das Übergeben von null oder einem Nicht-Objekt löst in PHP 8+ einen TypeError aus.
  • Rückgabewert — ein int, der Unix-Timestamp in Sekunden. (Subsekundengenauigkeit in Mikrosekunden wird verworfen; verwenden Sie $date->format('U.u'), wenn Sie diese benötigen.)

Das DateTime-Objekt kann mit der Funktion date_create() oder dem Konstruktor der Klasse DateTime erstellt werden. date_timestamp_get($date) ist der prozedurale Alias für den Methodenaufruf $date->getTimestamp().

Einfaches Beispiel

php— editable, runs on the server

Wir erstellen ein DateTime-Objekt aus einer Datumszeichenkette, übergeben es an date_timestamp_get() und geben den zurückgegebenen Unix-Timestamp aus. Für modernen, objektorientierten Code ist die äquivalente (und meist bevorzugte) Form $date->getTimestamp().

Zeitzone beeinflusst das Ergebnis

Da ein Timestamp ein absoluter UTC-Zeitpunkt ist, erzeugt dieselbe Uhrzeitzeichenkette einen anderen Timestamp, je nach der Zeitzone des Objekts:

<?php
$utc = new DateTime('2023-03-03 10:30:00', new DateTimeZone('UTC'));
$tokyo = new DateTime('2023-03-03 10:30:00', new DateTimeZone('Asia/Tokyo'));

echo date_timestamp_get($utc);   // 1677839400
echo "\n";
echo date_timestamp_get($tokyo); // 1677807000 (32400s = 9h earlier in UTC)

10:30 Uhr in Tokio liegt 9 Stunden vor 10:30 Uhr in UTC, daher ist sein Timestamp 32400 Sekunden kleiner. Siehe date_default_timezone_set() zur Steuerung der Standardzeitzone.

Den Timestamp in Berechnungen verwenden

Der eigentliche Wert eines Timestamps liegt in der Arithmetik — sobald ein Datum eine einfache Ganzzahl ist, können Sie ihn subtrahieren, vergleichen und frei konvertieren:

<?php
$start = date_timestamp_get(date_create('2023-03-03 10:30:00'));
$end   = date_timestamp_get(date_create('2023-03-03 12:00:00'));

$diffSeconds = $end - $start;
echo $diffSeconds / 60 . " minutes elapsed"; // 90 minutes elapsed

Um einen Timestamp wieder in eine formatierte Zeichenkette umzuwandeln, übergeben Sie ihn an date() oder erstellen Sie ein neues Objekt mit setTimestamp(). Für reichhaltigere Datums-zu-Datums-Differenzen (Jahre, Monate, Tage) bevorzugen Sie date_diff().

Häufige Anwendungsfälle und Fallstricke

  • Datumsangaben als Ganzzahl in einer Datenbank speichern hält Sortierungen und Bereichsabfragen schnell und zeitzonenunabhängig.
  • Zwei Zeitpunkte vergleichen ist ein einfacher Ganzzahlvergleich, sobald beide als Timestamps vorliegen.
  • Fallstrick — float vs. int: Der Rückgabetyp ist int. Wenn Sie Mikrosekundengenauigkeit benötigen (gesetzt über den Konstruktor oder date_create() mit einem Bruchteil einer Sekunde), schneidet getTimestamp() diese ab; verwenden Sie stattdessen format('U.u').
  • Fallstrick — Datumsangaben vor 1970 erzeugen negative Timestamps, was gültig ist, aber Code überrascht, der eine positive Zahl voraussetzt.
  • Umkehroperation: Um die Zeit eines Objekts aus einem Timestamp zu setzen, verwenden Sie date_timestamp_set().

Fazit

date_timestamp_get() bietet PHP-Entwicklern eine einfache, genaue Möglichkeit, ein DateTime-Objekt auf einen einzelnen UTC-Unix-Timestamp zu reduzieren — ideal für Speicherung, Vergleich und Arithmetik. Für alltäglichen objektorientierten Code greifen Sie auf $date->getTimestamp() zurück; die beiden sind austauschbar.

Übungen

Übung
Welche PHP-Funktion kann verwendet werden, um den aktuellen Timestamp zu ermitteln?
Welche PHP-Funktion kann verwendet werden, um den aktuellen Timestamp zu ermitteln?
Was this page helpful?