Start · Sprachen · PHP · Referenz · date_timezone_get

date_timezone_get

Funktion

Gibt das <code>DateTimeZone</code>-Objekt zurück, das der angegebenen <code>DateTime</code>- bzw. <code>DateTimeImmutable</code>-Instanz zugeordnet ist.

seit PHP 5.2.0 Kategorie: date

Signatur

date_timezone_get(DateTimeInterface $object): DateTimeZone|false

Beschreibung

date_timezone_get() ist die prozedurale Entsprechung der Methode DateTime::getTimezone(). Sie extrahiert das DateTimeZone-Objekt, das einem DateTime- oder DateTimeImmutable-Objekt zugewiesen wurde, und gibt es zurück.

Die Funktion ist nützlich, wenn man im prozeduralen Stil arbeitet oder die Zeitzone eines Datumsobjekts weiterverarbeiten, vergleichen oder anderweitig verwenden möchte – etwa um den Zeitzonennamen, den UTC-Offset oder die Sommerzeit-Regeln zu ermitteln.

Wurde dem DateTime-Objekt bei der Erstellung keine explizite Zeitzone mitgegeben, wird die aktuell in PHP konfigurierte Standard-Zeitzone (siehe date_default_timezone_get()) verwendet. Diese erscheint dann ebenfalls als Rückgabewert.

Im objektorientierten Stil empfiehlt sich stattdessen die Methode $dt->getTimezone(), die identisches Verhalten zeigt.

Parameter

Name Typ Default Beschreibung
$object Pflicht DateTimeInterface Ein DateTime- oder DateTimeImmutable-Objekt, dessen Zeitzone abgerufen werden soll.

Rückgabewert

Typ
DateTimeZone|false
Beschreibung
Gibt das zugehörige DateTimeZone-Objekt zurück. Im Fehlerfall wird false zurückgegeben.

Beispiele

Zeitzone eines DateTime-Objekts auslesen

<?php
$dt = date_create('2024-06-15 12:00:00', timezone_open('Europe/Berlin'));
$tz = date_timezone_get($dt);

echo $tz->getName(); // Zeitzonenname ausgeben
Europe/Berlin

UTC-Offset der Zeitzone ermitteln

<?php
$dt  = date_create('2024-01-10 08:00:00', timezone_open('America/New_York'));
$tz  = date_timezone_get($dt);

// UTC-Offset in Sekunden, dann in Stunden umrechnen
$offsetSeconds = $tz->getOffset($dt);
$offsetHours   = $offsetSeconds / 3600;

echo $tz->getName() . ' hat UTC-Offset: ' . $offsetHours . ' Stunden';
// Im Winter gilt EST (UTC-5)
America/New_York hat UTC-Offset: -5 Stunden

Objektorientierter Vergleich (äquivalente Methode)

<?php
$dt = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));

// Prozedural
$tz1 = date_timezone_get($dt);

// Objektorientiert – identisches Ergebnis
$tz2 = $dt->getTimezone();

echo $tz1->getName() . PHP_EOL; // Asia/Tokyo
echo $tz2->getName() . PHP_EOL; // Asia/Tokyo
Asia/Tokyo Asia/Tokyo

// Wichtig · Fallstricke

Fallstrick: Wenn ein DateTime-Objekt mit einem Unix-Timestamp (z. B. @1234567890) erstellt wird, wird die Zeitzone intern auf UTC gesetzt, unabhängig von der konfigurierten Standard-Zeitzone. date_timezone_get() liefert in diesem Fall UTC zurück, selbst wenn man eine andere Zeitzone erwartet.

Der Rückgabewert false tritt in der Praxis nur bei internen Fehlern auf; eine gültige DateTimeInterface-Instanz liefert nahezu immer ein DateTimeZone-Objekt.