Position actuelle: Accueil> Derniers articles> La méthode d'analyse et de traitement du format de données renvoyées par la fonction timezone_location_get

La méthode d'analyse et de traitement du format de données renvoyées par la fonction timezone_location_get

gitbox 2025-05-28

Dans PHP, Timezone_Location_get () est une fonction très pratique pour obtenir des informations de localisation géographique pour un fuseau horaire spécifié. Il est souvent utilisé dans les scénarios où la géolocalisation est requise en fonction des données du fuseau horaire ou affiche des informations liées au fuseau horaire. Cet article analysera le format de données de retour de la fonction Timezone_Location_get () en détail et explore comment traiter ces données efficacement.


1. INTRODUCTION DE TimeSone_Location_get ()

La fonction timezone_location_get () accepte un objet DateTimeZone en tant que paramètre et renvoie le tableau des informations de localisation géographique correspondant au fuseau horaire. L'utilisation spécifique est la suivante:

 $timezone = new DateTimeZone('Asia/Shanghai');
$location = timezone_location_get($timezone);
print_r($location);

2. Retour Format de données Explication détaillée

La fonction renvoie un tableau associatif à une structure similaire à:

 Array
(
    [country_code] => CN
    [latitude] => 31.22222
    [longitude] => 121.45806
    [comments] => Shanghai
)
  • Country_code : Country ISO 3166-1 Alpha-2 Code de deux lettres.

  • Latitude : la latitude, nombre de points flottants, unité en degrés du point central de ce fuseau horaire.

  • Longitude : la longitude, le nombre de points flottants, l'unité en degrés au point central de ce fuseau horaire.

  • Commentaires : Une brève description du fuseau horaire, généralement le nom principal de la ville.


3. Comment traiter ces données efficacement

Dans les applications pratiques, un traitement ultérieur de ces données est souvent nécessaire, comme:

  • Convertir le format des coordonnées (convertir entre le degré et la minute et le deuxième)

  • Calculer la distance basée sur la latitude et la longitude

  • Rechercher le nom ou le logo du pays en fonction du code du pays

1. Exemple de conversion de format de coordonnées

 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. Exemple de distance de calcul entre deux points (formule Havushin)

 function haversineDistance($lat1, $lng1, $lat2, $lng2) {
    $earthRadius = 6371; // Rayon de la Terre,L'unité est des kilomètres
    $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;
}

// Exemple:Calculez la distance entre Shanghai et Pékin
$beijing = ['latitude' => 39.9042, 'longitude' => 116.4074];
$distance = haversineDistance($location['latitude'], $location['longitude'], $beijing['latitude'], $beijing['longitude']);
echo "La distance entre Shanghai et Pékin est à propos {$distance} kilomètre";

3. Obtenir des informations nationales basées sur le code du pays

Country_code peut être converti au nom complet du pays via un tableau simple ou une bibliothèque tierce:

 $countryNames = [
    'CN' => 'Chine',
    'US' => 'USA',
    'JP' => 'Japon',
    // Peut être élargi en fonction des exigences
];

$country = $countryNames[$location['country_code']] ?? 'Pays inconnu';
echo "Pays du fuseau horaire:$country";

4. Résumé

Les informations géographiques fournies par la fonction Timezone_Location_get () sont simples et intuitives, et convient pour obtenir rapidement les coordonnées géographiques et les codes de pays correspondant au fuseau horaire. En combinant la conversion de coordonnées simples et les calculs géographiques, il peut répondre à une variété de besoins d'informations géographiques et de traitements de traitement.


 <?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 "Informations géographiques du fuseau horaire:\n";
echo "Code du pays: " . $location['country_code'] . "\n";
echo "latitude: $latDMS\n";
echo "longitude: $lngDMS\n";
echo "Remarque: " . $location['comments'] . "\n";

// Exemple:Calculez la distance d&#39;un autre emplacement
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 "La distance entre Shanghai et Pékin est à propos {$distance} kilomètre\n";