Start · Sprachen · PHP · Referenz · timezone_location_get

timezone_location_get

Funktion

Gibt Standortinformationen (Land, Breiten- und Längengrad, Kommentar) zu einer <code>DateTimeZone</code>-Instanz zurück.

seit PHP 5.3.0 Kategorie: date

Signatur

timezone_location_get(DateTimeZone $object): array|false

Beschreibung

timezone_location_get() ist die prozedurale Variante der Methode DateTimeZone::getLocation(). Sie akzeptiert ein DateTimeZone-Objekt und liefert ein assoziatives Array mit geografischen Metadaten zur übergebenen Zeitzone, wie sie in der IANA-Zeitzonendatenbank hinterlegt sind.

Das zurückgegebene Array enthält die Schlüssel country_code (ISO-3166-Alpha-2-Ländercode), latitude (Breitengrad als Float), longitude (Längengrad als Float) und comments (optionaler Freitext-Kommentar aus der IANA-Datenbank). Diese Informationen eignen sich z. B. für die automatische Vorauswahl einer Benutzer-Zeitzone auf Basis des Standorts oder zur Anzeige geografischer Informationen in Administrationsoberflächen.

Die Funktion ist bei UTC-Spezialzonen (z. B. UTC, Etc/GMT+5) oder manuellen Offset-Zonen nicht immer definiert und gibt in solchen Fällen false zurück. Prüfe den Rückgabewert daher immer explizit.

Parameter

Name Typ Default Beschreibung
$object Pflicht DateTimeZone Eine DateTimeZone-Instanz, deren Standortinformationen abgefragt werden sollen.

Rückgabewert

Typ
array|false
Beschreibung
Ein assoziatives Array mit den Schlüsseln country_code (string), latitude (float), longitude (float) und comments (string), oder false falls keine Standortinformationen verfügbar sind (z. B. bei UTC-Offset-Zonen).

Beispiele

Standortinformationen für eine bekannte Zeitzone ausgeben

<?php
$tz = new DateTimeZone('Europe/Berlin');
$location = timezone_location_get($tz);

if ($location !== false) {
    echo 'Land:       ' . $location['country_code'] . PHP_EOL;
    echo 'Breitengrad: ' . $location['latitude'] . PHP_EOL;
    echo 'Längengrad:  ' . $location['longitude'] . PHP_EOL;
    echo 'Kommentar:  ' . $location['comments'] . PHP_EOL;
} else {
    echo 'Keine Standortinformationen verfügbar.';
}
Land: DE Breitengrad: 52.5 Längengrad: 13.36667 Kommentar:

Alle Zeitzonen eines Landes mit Koordinaten auflisten

<?php
$zonen = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'US');

foreach ($zonen as $zoneName) {
    $tz = new DateTimeZone($zoneName);
    $loc = timezone_location_get($tz);
    if ($loc !== false) {
        printf(
            "%-35s  Lat: %8.5f  Lon: %9.5f\n",
            $zoneName,
            $loc['latitude'],
            $loc['longitude']
        );
    }
}
America/Adak Lat: 51.88000 Lon: -176.65833 America/Anchorage Lat: 61.21806 Lon: -149.90028 ...

// Wichtig · Fallstricke

Achtung bei UTC- und Offset-Zonen: Zeitzonen wie UTC, Etc/GMT, Etc/GMT+5 etc. haben in der IANA-Datenbank keine geografischen Koordinaten. timezone_location_get() gibt für diese Zonen false zurück – prüfe den Rückgabewert daher immer mit === false.

Die Funktion ist funktional identisch mit DateTimeZone::getLocation(). In objektorientiertem Code wird die Methode bevorzugt. Die prozedurale Form ist vor allem für Kontexte nützlich, in denen eine Callback- oder array_map-kompatible callable-Form benötigt wird.