Aktueller Standort: Startseite> Neueste Artikel> Die Datenformatanalyse- und Verarbeitungsmethode, die von der Funktion TimeZone_location_get zurückgegeben wurde

Die Datenformatanalyse- und Verarbeitungsmethode, die von der Funktion TimeZone_location_get zurückgegeben wurde

gitbox 2025-05-28

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.


1. Einführung in die Funktion TimeZone_Location_get ()

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);

2. DETAINDE DATA -Format Detaillierte Erläuterung

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.


3.. So verarbeiten Sie diese Daten effizient

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

1. Beispiel für die Koordinatenformatkonvertierung

 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";

2. Beispiel für die Berechnung des Abstands zwischen zwei Punkten (Havushin -Formel)

 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";

3. Erhalte nationale Informationen auf der Grundlage des Ländercode

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";

4. Zusammenfassung

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";