W3docs

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|false

timezone_location_get() ist der prozedurale Alias der Methode DateTimeZone::getLocation(), sodass $tz->getLocation() und timezone_location_get($tz) austauschbar sind.

Parameter

ParameterTypBeschreibung
$objectDateTimeZoneErforderlich. 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üsselBeschreibung
country_codeZweistelliger ISO-3166-Ländercode (z. B. GB) oder ??, wenn unbekannt.
latitudeBreitengrad in Dezimalgrad.
longitudeLängengrad in Dezimalgrad.
commentsEine 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:

php— editable, runs on the server

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 km

Häufige Fallstricke

  • Die Funktion erwartet ein Objekt, keinen String. Das direkte Übergeben von "Europe/London" erzeugt einen TypeError. Verpacken Sie den String zunächst in new DateTimeZone(...).
  • comments ist 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 Aufruf false zurückgibt.
  • Ungültige Bezeichner schlagen früh fehl. Ab PHP 8.0+ wirft new DateTimeZone("Not/AZone") eine DateInvalidTimeZoneException (davor einen ValueError), sodass der Fehler bereits bei der Konstruktion auftritt, nicht in timezone_location_get().

Verwandte Funktionen

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.

Übungen

Übung
Was gibt timezone_location_get() für eine gültige DateTimeZone zurück?
Was gibt timezone_location_get() für eine gültige DateTimeZone zurück?
Was this page helpful?