W3docs

timezone_offset_get()

Erfahren Sie, wie PHP's timezone_offset_get() den UTC-Offset eines DateTime in Sekunden zurückgibt, inklusive Sommerzeit und Umrechnung in Stunden.

Die Funktion timezone_offset_get() in PHP gibt den Timezone-Offset in Sekunden von der Coordinated Universal Time (UTC) für ein bestimmtes DateTimeInterface-Objekt zurück. Dieser Leitfaden behandelt Syntax, Parameter und praktische Verwendung.

timezone_offset_get() verstehen

Die Funktion timezone_offset_get() gibt den Offset der Zeitzone in Sekunden von der Coordinated Universal Time (UTC) für ein bestimmtes Datum und eine bestimmte Uhrzeit zurück. Es handelt sich um eine eingebaute PHP-Funktion, die Entwicklern ermöglicht, Datums- und Zeitangaben entsprechend bestimmter Zeitzonen zu verarbeiten.

Syntax

Die Syntax der Funktion timezone_offset_get() in PHP lautet wie folgt:

Die Syntax der Funktion timezone_offset_get() in PHP

<?php
timezone_offset_get(DateTimeZone $object, DateTimeInterface $datetime): int

Prozedural nimmt die Funktion ein DateTimeZone-Objekt und das DateTimeInterface, für das der Offset berechnet werden soll, und gibt den Offset in Sekunden zurück. Die meisten Entwickler verwenden das objektorientierte Äquivalent DateTimeZone::getOffset(), das sich natürlicher liest:

<?php
$tz   = new DateTimeZone('America/Los_Angeles');
$date = new DateTime('2019-01-01 12:00:00', $tz);

// These two calls are equivalent:
$offset = timezone_offset_get($tz, $date);
$offset = $tz->getOffset($date);

Parameter

Die Funktion timezone_offset_get() nimmt zwei Parameter entgegen:

  1. $object - Ein DateTimeZone-Objekt, dessen Offset ausgelesen werden soll.
  2. $datetime - Ein DateTimeInterface-Objekt (ein DateTime oder DateTimeImmutable), das den Zeitpunkt repräsentiert, für den der Offset berechnet wird.

Der Zeitpunkt ist entscheidend: Aufgrund der Sommerzeit kann dieselbe Zeitzone im Sommer einen anderen Offset als im Winter haben, daher muss der Funktion mitgeteilt werden, welchen Zeitpunkt man meint.

Rückgabewert & Hinweise

  • Rückgabewert: Gibt einen ganzzahligen Offset in Sekunden zurück. Er ist negativ für Zeitzonen westlich von UTC (Amerika) und positiv für solche östlich davon.
  • PHP-Version: Verfügbar seit PHP 5.2.0.
  • Sommerzeitbehandlung: Der Offset berücksichtigt automatisch die Sommerzeit. Für America/Los_Angeles gibt ein Winterdatum -28800 (UTC-8) zurück, während ein Sommerdatum -25200 (UTC-7) zurückgibt.
  • Stunden statt Sekunden: Um das Ergebnis in Stunden umzurechnen, teilt man durch 3600 (z. B. -28800 / 3600 = -8).

Praktische Anwendungsfälle

Die Funktion timezone_offset_get() in PHP ist ein leistungsstarkes Werkzeug für die Arbeit mit Datums- und Zeitangaben in bestimmten Zeitzonen. Einige praktische Anwendungsfälle sind:

  1. Anzeigen von Datums- und Zeitinformationen entsprechend der Zeitzonenpräferenz des Benutzers.
  2. Konvertieren von Datums- und Zeitinformationen von einer Zeitzone in eine andere.
  3. Durchführen von Datums- und Zeitberechnungen mit genauen Timezone-Offsets.

Beispielanwendung

Hier ist ein Beispiel für die Verwendung der Funktion timezone_offset_get() in PHP:

Beispiel der PHP-Funktion timezone_offset_get()

php— editable, runs on the server

Das Januardatum liegt außerhalb der Sommerzeit, daher beträgt der Offset -28800 Sekunden (UTC-8):

-28800

Sommerzeit in der Praxis

Der Aufruf derselben Zeitzone mit einem Sommerdatum gibt einen anderen Offset zurück, da Pacific Daylight Time UTC-7 ist. Die Formatierung des Offsets als Stunden macht das Ergebnis leichter lesbar:

<?php
$tz = new DateTimeZone('America/Los_Angeles');

foreach (['2019-01-01 12:00:00', '2019-07-01 12:00:00'] as $when) {
    $date    = new DateTime($when, $tz);
    $seconds = $tz->getOffset($date);
    $hours   = $seconds / 3600;
    echo "$when => $seconds seconds (UTC$hours)\n";
}
2019-01-01 12:00:00 => -28800 seconds (UTC-8)
2019-07-01 12:00:00 => -25200 seconds (UTC-7)

Fazit

timezone_offset_get() (und sein objektorientiertes Pendant DateTimeZone::getOffset()) gibt den genauen Abstand einer Zeitzone von UTC in Sekunden für einen bestimmten Zeitpunkt zurück, wobei die Sommerzeit bereits berücksichtigt ist. Teile durch 3600, wenn du Stunden benötigst, und denke daran, das relevante Datum zu übergeben, damit die Sommerzeit korrekt aufgelöst wird.

Weiterführende Informationen findest du unter date_default_timezone_set() zum Setzen der Standard-Zeitzone des Skripts, timezone_name_get() zum Lesen des Namens einer Zeitzone und der vollständigen Liste der PHP-Zeitzonen.

Übungen

Übung
Was gibt die PHP-Funktion timezone_offset_get() zurück?
Was gibt die PHP-Funktion timezone_offset_get() zurück?
Was this page helpful?