In PHP ist TimeZone_location_get () eine sehr praktische Funktion, um geografische Standortinformationen für eine bestimmte Zeitzone zu erhalten. Es wird häufig in Szenarien verwendet, in denen Geolokalisierung basierend auf Zeitzonendaten oder der Anzeige von Zeitzoneninformationen erforderlich ist. In diesem Artikel wird das Rückgabedatenformat der Funktion TIMEZone_Location_get () im Detail analysiert und untersucht, wie diese Daten effizient verarbeitet werden.
Die Funktion TimeZone_Location_get () akzeptiert ein DateTimezone -Objekt als Parameter und gibt das geografische Standortinformationsarray, das der Zeitzone entspricht, zurück. Die spezifische Verwendung ist wie folgt:
$timezone = new DateTimeZone('Asia/Shanghai');
$location = timezone_location_get($timezone);
print_r($location);
Die Funktion gibt ein assoziatives Array mit einer ähnlichen Struktur zurück:
Array
(
[country_code] => CN
[latitude] => 31.22222
[longitude] => 121.45806
[comments] => Shanghai
)
Country_Code : Country ISO 3166-1 ALPHA-2 Zwei Buchstabencode.
Breitengrad : Der Breitengrad, die schwimmende Punktzahl, Einheit in Grad des Mittelpunkts dieser Zeitzone.
Länge : Die Länge, Schwimmpunktzahl, Einheit in Grad im Mittelpunkt dieser Zeitzone.
Kommentare : Eine kurze Beschreibung der Zeitzone, normalerweise der Hauptname der Stadt.
In praktischen Anwendungen ist häufig eine weitere Verarbeitung dieser Daten erforderlich, z. B.:
Koordinatenformat konvertieren (zwischen Grad und Minute und Sekunde konvertieren)
Berechnen Sie den Abstand basierend auf Breitengrad und Längengrad
Suchen Sie nach Ländername oder Logo basierend auf dem Ländercode
function decimalToDMS($decimal) {
$degrees = floor($decimal);
$minutes = floor(($decimal - $degrees) * 60);
$seconds = round((($decimal - $degrees) * 60 - $minutes) * 60, 2);
return "{$degrees}°{$minutes}'{$seconds}\"";
}
$latDMS = decimalToDMS($location['latitude']);
$lngDMS = decimalToDMS($location['longitude']);
echo "Latitude: $latDMS, Longitude: $lngDMS";
function haversineDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6371; // Erdenradius,Die Einheit ist Kilometer
$dLat = deg2rad($lat2 - $lat1);
$dLng = deg2rad($lng2 - $lng1);
$a = sin($dLat / 2) * sin($dLat / 2) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) *
sin($dLng / 2) * sin($dLng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
return $earthRadius * $c;
}
// Beispiel:Berechnen Sie den Abstand zwischen Shanghai und Peking
$beijing = ['latitude' => 39.9042, 'longitude' => 116.4074];
$distance = haversineDistance($location['latitude'], $location['longitude'], $beijing['latitude'], $beijing['longitude']);
echo "Der Abstand zwischen Shanghai und Peking ist ungefähr {$distance} Kilometer";
Country_Code kann über ein einfaches Array oder eine Bibliothek von Drittanbietern in den vollständigen Ländernamen umgewandelt werden:
$countryNames = [
'CN' => 'China',
'US' => 'USA',
'JP' => 'Japan',
// Kann nach Anforderungen erweitert werden
];
$country = $countryNames[$location['country_code']] ?? 'Unbekanntes Land';
echo "Landzone:$country";
Die geografischen Informationen, die in der Funktion TimeZone_Location_get () bereitgestellt werden, sind einfach und intuitiv und sind geeignet, um die geografischen Koordinaten und Ländercodes schnell zu erhalten, die der Zeitzone entsprechen. Kombinieren Sie einfache Koordinatenkonvertierung und geografische Berechnungen und können eine Vielzahl von geografischen Informationsanforderungen und Verarbeitungsanforderungen erfüllen.
<?php
$timezone = new DateTimeZone('Asia/Shanghai');
$location = timezone_location_get($timezone);
function decimalToDMS($decimal) {
$degrees = floor($decimal);
$minutes = floor(($decimal - $degrees) * 60);
$seconds = round((($decimal - $degrees) * 60 - $minutes) * 60, 2);
return "{$degrees}°{$minutes}'{$seconds}\"";
}
$latDMS = decimalToDMS($location['latitude']);
$lngDMS = decimalToDMS($location['longitude']);
echo "Zeitzone Geografische Informationen:\n";
echo "Landesvorwahl: " . $location['country_code'] . "\n";
echo "Breite: $latDMS\n";
echo "Länge: $lngDMS\n";
echo "Bemerkung: " . $location['comments'] . "\n";
// Beispiel:Berechnen Sie den Abstand von einem anderen Ort
function haversineDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6371;
$dLat = deg2rad($lat2 - $lat1);
$dLng = deg2rad($lng2 - $lng1);
$a = sin($dLat/2) * sin($dLat/2) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) *
sin($dLng/2) * sin($dLng/2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
return $earthRadius * $c;
}
$beijing = ['latitude' => 39.9042, 'longitude' => 116.4074];
$distance = haversineDistance($location['latitude'], $location['longitude'], $beijing['latitude'], $beijing['longitude']);
echo "Der Abstand zwischen Shanghai und Peking ist ungefähr {$distance} Kilometer\n";