Die PHP-Funktion timezone_version_get() verstehen
Erfahren Sie, wie timezone_version_get() in PHP die Version der IANA-Zeitzonendatenbank der intl-Erweiterung zurückgibt.
Die Funktion timezone_version_get() gibt die Version der Zeitzonendatenbank zurück, die mit der intl-Erweiterung gebündelt ist. Die Zeitzonendatenbank (auch als tz-Datenbank oder IANA tz data bekannt) ist die maßgebliche Quelle für die weltweiten Zeitzonenregeln – UTC-Offsets, Sommerzeit-Übergänge und historische Änderungen. Regierungen ändern diese Regeln regelmäßig, daher wird die Datenbank mehrmals im Jahr überarbeitet und mit einer Versionsnummer wie 2024.1 versehen.
Die Kenntnis der Version ist wichtig, weil veraltete Regeln zu falschen Zeiten führen. Wenn ein Land seinen Sommerzeitbeginn verschiebt und Ihr Server noch eine alte Datenbank verwendet, ist jede Datumsberechnung über diesen Übergang hinweg um eine Stunde falsch. Mit timezone_version_get() können Sie ablesen, welche Version PHP tatsächlich verwendet, um sie zu prüfen, zu protokollieren oder bei Veralterung eine Warnung auszugeben.
Diese Seite behandelt die Syntax, den sicheren Aufruf, das Lesen des Ergebnisses und die Beziehung zu den anderen PHP-Zeitzonenfunktionen.
Syntax
Die Funktion timezone_version_get() hat eine sehr einfache Syntax. Hier ist die Syntax:
Die Syntax der PHP-Funktion timezone_version_get()
string timezone_version_get ( void )Verfügbar seit PHP 5.2.0.
Diese Funktion nimmt keine Argumente entgegen und gibt einen string zurück, der nur die Versionsnummer enthält, wie z. B. 2023.3 oder 2024.1. Das Format ist YYYY.N – das vierstellige Jahr des IANA-Releases gefolgt von der sequenziellen Veröffentlichung innerhalb dieses Jahres (a, b, c… bei IANA werden hier zu .1, .2, .3).
Hinweis:
timezone_version_get()ist Teil derintl-Erweiterung, nicht der Kern-Datums-/Uhrzeiterweiterung. Sie gibt die gebündelteintl/ICU-Kopie der Zeitzonendaten an, die von der Version abweichen kann, die PHPsDateTime-/DateTimeZone-Klassen verwenden. Um zu prüfen, ob dieintl-Erweiterung überhaupt vorhanden ist, verwenden Sieextension_loaded('intl')vor dem Aufruf.
Verwendung
Ein typischer Aufruf sieht folgendermaßen aus:
- Mit
extension_loaded('intl')absichern, damit das Skript auf Servern ohne die Erweiterung keinen fatalen Fehler verursacht. timezone_version_get()aufrufen, um den Versions-String abzurufen.- Den Wert speichern, protokollieren oder anzeigen – oder ihn mit einem erwarteten Minimalwert vergleichen.
Beispiel
Hier ist ein Codebeispiel, das zeigt, wie die Funktion timezone_version_get() in PHP-Anwendungen verwendet wird:
Beispiel der Funktion timezone_version_get() in PHP
Hinweis: Diese Funktion erfordert die intl-Erweiterung. Wenn die Erweiterung nicht aktiviert ist, steht die Funktion nicht zur Verfügung. Das obige Beispiel enthält eine Prüfung, um einen fatalen Fehler zu vermeiden.
Warnung bei veralteter Datenbank
Da die Version nur ein YYYY.N-String ist, können Sie ihn mit einem vertrauenswürdigen Minimalwert vergleichen. Dies ist nützlich für einen Health-Check-Endpunkt oder einen Deployment-Guard:
<?php
$minimum = '2024.1';
$current = timezone_version_get();
if (version_compare($current, $minimum, '<')) {
echo "Warning: timezone database $current is older than $minimum. Update the intl/ICU library.";
} else {
echo "Timezone database $current is up to date.";
}
?>version_compare() behandelt die punktierte Version wie eine Software-Version, sodass 2024.1 korrekt als neuer als 2023.3 verglichen wird.
Verwandte Funktionen
timezone_version_get() ist die einzige Funktion, die die Version der Datenbank meldet. Der Rest des PHP-Zeitzonenpakets arbeitet mit den Daten selbst:
date_default_timezone_set()unddate_default_timezone_get()— setzt und liest die Standard-Zeitzone, die von jeder Datumsfunktion verwendet wird.timezone_identifiers_list()— listet alle unterstützten Zeitzonenbezeichner auf (z. B.Europe/London).timezone_name_get()— gibt den Namen einesDateTimeZone-Objekts zurück.timezone_abbreviations_list()— ordnet Abkürzungen wieCETihren Offsets zu.
Fazit
timezone_version_get() ist eine kleine, aber praktische Funktion: Sie zeigt genau an, welche IANA-Zeitzonendatenbank die intl-Erweiterung verwendet. Sichern Sie den Aufruf immer mit extension_loaded('intl') ab, und erwägen Sie, die zurückgegebene Version mit einem bekannten Minimalwert zu vergleichen, damit veraltete Zeitzonenregeln beim Deployment und nicht als falsche Zeitstempel in der Produktion auffallen.