Dans de nombreux scénarios d'application, la compréhension des temps de coucher du soleil dans différentes villes est une exigence commune. PHP fournit la fonction date_sunset () , qui peut calculer l'heure du coucher du soleil à un emplacement spécifié. Combiné avec la classe DateTimeZone , nous pouvons facilement obtenir des comparaisons de temps de coucher de soleil dans plusieurs villes. Cet article utilisera un exemple de code pour introduire comment utiliser date_sunset () pour implémenter cette fonction avec DateTimeZone .
La fonction date_sunset () est une fonction de date et d'heure très pratique construite en PHP pour obtenir l'heure du coucher du soleil d'un emplacement spécifié. Sa syntaxe de base est la suivante:
date_sunset(int $timestamp, int $format = SUNFUNCS_RET_STRING, float $latitude = 0, float $longitude = 0, float $zenith = 90.83, float $gmt_offset = 0)
$ horodatage : l'horodatage spécifié.
$ Format : Renvoie le format, qui peut être sunfuncs_ret_string , Sunfuncs_ret_timestamp , Sunfuncs_ret_double , etc.
$ latitude et $ longitude : spécifie la latitude et la longitude de l'emplacement.
$ Zenith : La position astronomique du soleil, défaut à 90,83 (c'est-à-dire le point de coucher du soleil astronomique).
$ gmt_offset : le décalage du fuseau horaire.
Pour obtenir des temps de coucher de soleil plus précis dans la région, nous pouvons utiliser la classe DateTimeZone de PHP, qui nous permet de spécifier différents fuseaux horaires. En utilisant le fuseau horaire avec la fonction date_sunset () , nous pouvons calculer l'heure exacte du coucher du soleil.
L'exemple de code PHP suivant montre comment utiliser date_sunset () avec la classe DateTimeZone pour comparer les temps de coucher du soleil dans différentes villes. Dans l'exemple, nous avons sélectionné trois villes: New York, Londres et Pékin pour comparaison.
<?php
// Définir la latitude et la longitude d'une ville et le fuseau horaire
$locations = [
'New York' => [
'latitude' => 40.7128,
'longitude' => -74.0060,
'timezone' => 'America/New_York'
],
'London' => [
'latitude' => 51.5074,
'longitude' => -0.1278,
'timezone' => 'Europe/London'
],
'Beijing' => [
'latitude' => 39.9042,
'longitude' => 116.4074,
'timezone' => 'Asia/Shanghai'
]
];
// Horodatage actuel
$timestamp = time();
// Exporter des temps de coucher de soleil dans chaque ville
foreach ($locations as $city => $info) {
// Obtenez l'objet de fuseau horaire
$timezone = new DateTimeZone($info['timezone']);
// Calculez l'heure du coucher du soleil de la ville
$sunset = date_sunset($timestamp, SUNFUNCS_RET_TIMESTAMP, $info['latitude'], $info['longitude']);
// créer DateTime Objet et réglage du fuseau horaire
$sunset_time = new DateTime("@$sunset");
$sunset_time->setTimezone($timezone);
// Format de sortie du coucher du soleil
echo "The sunset time in $city is: " . $sunset_time->format('Y-m-d H:i:s') . " (" . $info['timezone'] . ")\n";
}
?>
Nous définissons trois villes, leur latitude, leur longitude et leurs fuseaux horaires. Utilisez la classe DateTimeZone pour obtenir l'objet de fuseau horaire de chaque ville, en vous assurant que l'heure du coucher du soleil calculée est basée sur l'heure locale.
Utilisez la fonction date_sunset () pour calculer l'heure du coucher du soleil de chaque ville. Cette fonction renvoie le résultat dans le format horodomagien UNIX.
Nous définissons le fuseau horaire correct en créant un objet DateTime et en utilisant la méthode setTimeZone () , puis forma la sortie au format date-heure de YMD H: I: s .
En supposant que l'heure actuelle est à 12h00 UTC le 26 avril 2025, le programme publiera quelque chose de similaire à ce qui suit:
The sunset time in New York is: 2025-04-26 19:50:00 (America/New_York)
The sunset time in London is: 2025-04-26 20:10:00 (Europe/London)
The sunset time in Beijing is: 2025-04-26 19:30:00 (Asia/Shanghai)
De cette façon, nous pouvons facilement comparer les temps de coucher du soleil dans différentes villes, et le format de sortie est flexible et précis.