timezone_location_get()
PHP timezone_location_get() gibt ein Array mit Ländercode, Breiten- und Längengrad sowie Kommentaren für eine DateTimeZone zurück. Syntax und Beispiele.
PHP timezone_location_get() Funktion
Die Funktion timezone_location_get() gibt den geografischen Standort zurück, der einer Zeitzone zugeordnet ist – ihr Land, ihren Breiten- und Längengrad. Das ist nützlich, wenn Sie eine Zeitzone haben (zum Beispiel die eines Benutzerkontos) und wissen möchten, wo auf der Erde sie liegt, anstatt nur ihren Uhrzeitversatz zu kennen.
Diese Seite erläutert, was die Funktion zurückgibt, ihre Syntax und Parameter, ausführbare Beispiele, häufige Fallstricke und wie sie sich zu PHPs anderen Zeitzonen-Hilfsfunktionen verhält.
Syntax
<?php
timezone_location_get(DateTimeZone $object): array|falsetimezone_location_get() ist der prozedurale Alias der Methode DateTimeZone::getLocation(), sodass $tz->getLocation() und timezone_location_get($tz) austauschbar sind.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
$object | DateTimeZone | Erforderlich. Ein DateTimeZone-Objekt, dessen Standort ausgelesen werden soll. |
Beachten Sie, dass – anders als viele andere Zeitzonen-Funktionen – diese Funktion ein DateTimeZone-Objekt erwartet, keinen Zeitzonenstring. Um das Objekt aus einem String zu erzeugen, verwenden Sie new DateTimeZone("Europe/London") oder timezone_open().
Rückgabewert
Bei Erfolg gibt die Funktion ein assoziatives Array mit folgenden Schlüsseln zurück:
| Schlüssel | Beschreibung |
|---|---|
country_code | Zweistelliger ISO-3166-Ländercode (z. B. GB) oder ??, wenn unbekannt. |
latitude | Breitengrad in Dezimalgrad. |
longitude | Längengrad in Dezimalgrad. |
comments | Eine kurze Anmerkung zum Standort; oft ein leerer String. |
Die Funktion gibt false zurück, wenn für die angegebene Zeitzone keine Standortinformationen verfügbar sind.
Beispiele
Standort einer Zeitzone auslesen
Hier erstellen wir eine DateTimeZone für "Europe/London" und geben deren Standortdaten aus:
Ausgabe:
Array
(
[country_code] => GB
[latitude] => 51.50833
[longitude] => -0.12528
[comments] =>
)Die Funktion gibt ein assoziatives Array zurück, das beschreibt, wo die Zeitzone verankert ist. Beachten Sie, dass comments bei vielen Zeitzonen leer ist – verlassen Sie sich nicht darauf, dass es befüllt ist.
Das objektorientierte Äquivalent verwenden
timezone_location_get($tz) ist lediglich ein Alias für DateTimeZone::getLocation(). Folgendes gibt dasselbe Array aus:
<?php
$timezone = new DateTimeZone("America/Los_Angeles");
print_r($timezone->getLocation());Ausgabe:
Array
(
[country_code] => US
[latitude] => 34.05222
[longitude] => -118.24278
[comments] => Pacific
)Entfernung zwischen zwei Zeitzonen berechnen
Da die Funktion echte Koordinaten liefert, können Sie geografische Berechnungen damit anstellen – zum Beispiel die Großkreisentfernung (in Kilometern) zwischen zwei Zeitzonen:
<?php
$a = timezone_location_get(new DateTimeZone("Europe/London"));
$b = timezone_location_get(new DateTimeZone("America/New_York"));
$earthRadius = 6371; // km
$dLat = deg2rad($b["latitude"] - $a["latitude"]);
$dLon = deg2rad($b["longitude"] - $a["longitude"]);
$h = sin($dLat / 2) ** 2
+ cos(deg2rad($a["latitude"])) * cos(deg2rad($b["latitude"]))
* sin($dLon / 2) ** 2;
$distance = 2 * $earthRadius * asin(sqrt($h));
echo round($distance) . " km";Ausgabe:
5570 kmHäufige Fallstricke
- Die Funktion erwartet ein Objekt, keinen String. Das direkte Übergeben von
"Europe/London"erzeugt einenTypeError. Verpacken Sie den String zunächst innew DateTimeZone(...). commentsist häufig leer. Behandeln Sie es als optionale Metadaten, nicht als Bezeichnung, die Sie Benutzern anzeigen können.- Nur-Offset-Zeitzonen haben keinen Standort. Eine
DateTimeZone, die aus einem Offset wie"+02:00"erstellt wurde, ist an keinen Ort gebunden, sodass der Aufruffalsezurückgibt. - Ungültige Bezeichner schlagen früh fehl. Ab PHP 8.0+ wirft
new DateTimeZone("Not/AZone")eineDateInvalidTimeZoneException(davor einenValueError), sodass der Fehler bereits bei der Konstruktion auftritt, nicht intimezone_location_get().
Verwandte Funktionen
timezone_open()— erstellt eineDateTimeZoneaus einem String.timezone_name_get()— gibt den Namen einer Zeitzone zurück.timezone_offset_get()— gibt den UTC-Versatz einer Zeitzone zurück.timezone_identifiers_list()— listet alle unterstützten Zeitzonen-Bezeichner auf.- PHP Timezones — Überblick über die Arbeit mit Zeitzonen in PHP.
Fazit
timezone_location_get() wandelt ein DateTimeZone-Objekt in konkrete geografische Daten um – Ländercode, Breiten- und Längengrad –, die Sie für Karten, Entfernungsberechnungen oder einfach zur Anzeige des Standorts einer Zeitzone nutzen können. Denken Sie daran, ein DateTimeZone-Objekt (keinen String) zu übergeben und den false-Rückgabewert für Nur-Offset-Zeitzonen zu behandeln.