Le réglage du fuseau horaire est un facteur crucial lors du développement d'applications PHP qui utilisent des fonctionnalités liées au temps de Sunset. Étant donné que les temps de coucher de soleil sont différents dans différents fuseaux horaires, lors de l'obtention de temps de coucher de soleil précis, il est nécessaire de s'assurer que le fuseau horaire est correctement réglé. Cet article montrera comment définir différents fuseaux horaires en PHP et obtenir le temps exact du coucher du soleil. Nous y parviendrons via un code PHP, combiné avec des API externes.
La fonction Date_default_timeZone_set () de PHP nous permet de définir le fuseau horaire par défaut. Par défaut, PHP utilise les paramètres de fuseau horaire du système, mais nous pouvons le remplacer avec cette fonction. Par exemple, le code suivant définit le fuseau horaire pour New York Time:
<?php
date_default_timezone_set('America/New_York');
echo 'L'heure actuelle est:' . date('Y-m-d H:i:s');
?>
Les identifiants courants du fuseau horaire sont:
Asie / Shanghai (temps de Shanghai)
Europe / Londres (heure de Londres)
America / New_york (New York Time)
Vous pouvez trouver la liste complète du fuseau horaire dans la liste des fuseaux horaires PHP .
Afin d'obtenir l'heure exacte du coucher du soleil, nous devons généralement appeler un service d'API tiers. Une API couramment utilisée est l'API Sunset et Sunrise Times . Grâce à cette API, nous pouvons passer des informations de latitude et de longitude et de fuseau horaire pour obtenir le temps de coucher du soleil d'un certain endroit.
Voici un exemple d'utilisation de cette API pour obtenir le temps de coucher du soleil à un certain endroit:
<?php
// Définir le fuseau horaire
date_default_timezone_set('Asia/Shanghai');
// Régler la latitude et la longitude
$latitude = 31.2304; // Latitude de Shanghai
$longitude = 121.4737; // Longitude de Shanghai
// utiliserAPIObtenez l'heure du coucher du soleil
$api_url = "https://api.sunset-sunrise.org/json?lat={$latitude}&lng={$longitude}&formatted=0";
$response = file_get_contents($api_url);
$data = json_decode($response, true);
// Analyser le temps de coucher du soleil
$sunset_time = $data['results']['sunset'];
echo 'Le temps de coucher du soleil à Shanghai est:' . $sunset_time;
?>
Dans ce code, nous utilisons la fonction file_get_contents () pour envoyer la demande de l'API et analyser les données JSON renvoyées via JSON_DECODE () . $ data ['résultats'] ['Sunset'] contient le temps UTC du coucher du soleil. Nous pouvons ajuster cette fois en fonction du fuseau horaire défini pour nous assurer qu'il respecte l'heure locale.
Le temps de coucher du soleil obtenu est généralement le temps UTC, que nous devons convertir à l'heure locale du fuseau horaire cible. Cela peut être réalisé à l'aide de la classe DateTime et de la classe DateTimeZone .
Voici un exemple de code pour convertir le temps UTC en un fuseau horaire local:
<?php
// Obtenez l'heure du coucher du soleil(UTC)
$utc_sunset_time = $data['results']['sunset']; // Supposer deAPIObtenu dansUTCtemps
// créerDateTimeObjet et définir commeUTCFuseau horaire
$datetime = new DateTime($utc_sunset_time, new DateTimeZone('UTC'));
// 转换为上海Fuseau horaire
$datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));
// 输出转换后的本地temps
echo 'Le temps de coucher du soleil à Shanghai est:' . $datetime->format('Y-m-d H:i:s');
?>
Dans cet exemple, nous créons d'abord un objet DateTime et le définissons sur le fuseau horaire UTC via la classe DateTimeZone . Ensuite, utilisez la méthode setTimeZone () pour convertir l'heure au fuseau horaire de Shanghai ( Asie / Shanghai ). Enfin, utilisez la méthode Format () pour sortir l'heure locale.
En combinant toutes les sections précédentes, voici un exemple complet de code PHP montrant comment définir le fuseau horaire et obtenir l'heure exacte du coucher du soleil:
<?php
// Définir le fuseau horaire为上海
date_default_timezone_set('Asia/Shanghai');
// Régler la latitude et la longitude
$latitude = 31.2304;
$longitude = 121.4737;
// utiliserAPIObtenez l'heure du coucher du soleil
$api_url = "https://api.sunset-sunrise.org/json?lat={$latitude}&lng={$longitude}&formatted=0";
$response = file_get_contents($api_url);
$data = json_decode($response, true);
// ObtenirUTCtemps
$utc_sunset_time = $data['results']['sunset'];
// créerDateTimeObjet et définir commeUTCFuseau horaire
$datetime = new DateTime($utc_sunset_time, new DateTimeZone('UTC'));
// 转换为上海Fuseau horaire
$datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));
// 输出日落temps
echo 'Le temps de coucher du soleil à Shanghai est:' . $datetime->format('Y-m-d H:i:s');
?>
En définissant le fuseau horaire et en utilisant l'API pour obtenir le temps de coucher du soleil, nous pouvons obtenir le temps de coucher du soleil dans différentes régions avec précision. Il est important de s'assurer que le fuseau horaire est réglé correctement afin que le temps local précis du coucher du soleil soit disponible. Dans le même temps, la mise à jour de la classe DateTime et de la classe DateTimeZone peut nous aider à convertir le temps UTC en temps local du fuseau horaire cible.