Signatur
Beschreibung
timezone_offset_get() berechnet die Differenz zwischen der angegebenen Zeitzone und GMT/UTC in Sekunden. Der Rückgabewert ist positiv für Zeitzonen östlich von Greenwich und negativ für Zeitzonen westlich davon.
Die Funktion ist der prozedurale Stil von DateTimeZone::getOffset() und benötigt zwei Parameter: ein DateTimeZone-Objekt sowie ein DateTimeInterface-Objekt (z. B. DateTime oder DateTimeImmutable), das den genauen Zeitpunkt definiert, für den die Verschiebung berechnet wird.
Der zweite Parameter ist wichtig, weil Zeitzonen je nach Jahreszeit unterschiedliche Verschiebungen haben können – beispielsweise durch die Sommerzeit (DST). Mit dem DateTimeInterface-Objekt wird sichergestellt, dass die korrekte Offset-Berechnung für den gewünschten Moment erfolgt.
Typische Anwendungsfälle sind die Darstellung lokaler Uhrzeiten für verschiedene Regionen, die Berechnung von Zeitdifferenzen zwischen Zeitzonen sowie die Konvertierung von UTC-Zeitstempeln in lokale Zeiten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | DateTimeZone | Ein DateTimeZone-Objekt, das die Zeitzone repräsentiert, für die der UTC-Offset ermittelt werden soll. |
|
| $datetime Pflicht | DateTimeInterface | Ein DateTimeInterface-Objekt (z. B. DateTime oder DateTimeImmutable), das den Zeitpunkt definiert, für den die Zeitzonenverschiebung berechnet wird. Dieser Parameter ist notwendig, da die Verschiebung je nach Sommer- oder Winterzeit variieren kann. |
Rückgabewert
int zurück. Positive Werte stehen für Zeitzonen östlich von UTC, negative für westliche Zeitzonen. Gibt false zurück, wenn ein Fehler aufgetreten ist.Beispiele
UTC-Offset für Berlin im Sommer und Winter
<?php
$tz = new DateTimeZone('Europe/Berlin');
$summer = new DateTimeImmutable('2024-07-15 12:00:00', new DateTimeZone('UTC'));
$winter = new DateTimeImmutable('2024-01-15 12:00:00', new DateTimeZone('UTC'));
$offsetSummer = timezone_offset_get($tz, $summer);
$offsetWinter = timezone_offset_get($tz, $winter);
echo 'Sommer-Offset: ' . ($offsetSummer / 3600) . ' Stunden' . PHP_EOL;
echo 'Winter-Offset: ' . ($offsetWinter / 3600) . ' Stunden' . PHP_EOL;
Zeitverschiebung mehrerer Zeitzonen vergleichen
<?php
$zeitzonen = ['America/New_York', 'Europe/London', 'Asia/Tokyo', 'Australia/Sydney'];
$jetzt = new DateTimeImmutable('now', new DateTimeZone('UTC'));
foreach ($zeitzonen as $tzName) {
$tz = new DateTimeZone($tzName);
$offset = timezone_offset_get($tz, $jetzt);
$stunden = $offset / 3600;
echo sprintf('%-20s: %+.1f Stunden' . PHP_EOL, $tzName, $stunden);
}
// Wichtig · Fallstricke
Sommerzeit (DST): Da Länder wie Deutschland oder die USA die Uhren saisonal umstellen, ist der zweite Parameter $datetime essenziell korrekt anzugeben. Ein falscher Zeitpunkt kann zu einer um eine Stunde falschen Verschiebung führen.
Prozedurale vs. OOP-Stil: timezone_offset_get($tz, $dt) ist funktional identisch mit $tz->getOffset($dt). In modernem PHP-Code wird der OOP-Stil bevorzugt.
Rückgabe in Sekunden: Der Offset wird immer in Sekunden zurückgegeben. Um Stunden zu erhalten, muss durch 3600 dividiert werden.