Dans PHP, la fonction date_sunset () est utilisée pour calculer l'heure du coucher du soleil d'une date et d'un lieu donné. Par défaut, cette fonction renvoie l'heure en fonction du fuseau horaire par défaut du serveur. Si le paramètre de fuseau horaire du serveur est différent du fuseau horaire de l'emplacement cible, il peut entraîner un temps de coucher du soleil obtenu. Cet article introduira en détail comment ajuster les paramètres du fuseau horaire de la fonction date_sunset () pour s'assurer que l'heure du coucher du soleil correcte est obtenue.
La syntaxe de base de la fonction date_sunset () est la suivante:
date_sunset(
int $timestamp,
int $format = SUNFUNCS_RET_STRING,
float $latitude = ini_get("date.default_latitude"),
float $longitude = ini_get("date.default_longitude"),
float $zenith = ini_get("date.sunset_zenith"),
float $gmt_offset = 0
): string|int|float|false
$ horodatage : horodatage Unix pour DateTime
$ Format : Format de valeur de retour, format de chaîne couramment utilisé ( Sunfuncs_ret_string ) ou format horodat
$ latitude , $ longitude : coordonnées géographiques
$ zenith : angle de hauteur du soleil, par défaut
$ gmt_offset : décalage du fuseau horaire (nombre d'heures par rapport à GMT)
date_sunset () Le dernier paramètre $ gmt_offset est la clé pour ajuster le fuseau horaire. C'est le nombre d'heures par rapport à GMT, comme:
Temps de Pékin (UTC + 8) entrant 8
New York Time (UTC-5) entrant-5
Passer $ gmt_offset permet correctement à la fonction de renvoyer l'heure exacte du coucher du soleil de ce fuseau horaire.
L'exemple suivant montre comment utiliser date_sunset () pour obtenir l'heure du coucher du soleil de l'heure de Pékin:
<?php
// Définir le fuseau horaire,Influence date() Sortie des fonctions égales,但不Influence date_sunset Calcul de
date_default_timezone_set('Asia/Shanghai');
// Obtenez l'horodatage pour aujourd'hui
$timestamp = time();
// Définir les coordonnées géographiques(Pékin)
$latitude = 39.9042;
$longitude = 116.4074;
// Définir le fuseau horaire偏移,Pékin时间是 +8
$gmt_offset = 8;
// Obtenez l'heure du coucher du soleil,Renvoie le format en tant que chaîne "HH:MM"
$sunset_time = date_sunset($timestamp, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, $gmt_offset);
echo "Pékin时间的日落时间是:$sunset_time";
?>
Ce code sort similaire à:
Pékin时间的日落时间是:18:45
$ gmt_offset doit être cohérent avec le fuseau horaire correspondant à $ latitude et $ longitude .
Le fuseau horaire du serveur PHP n'affecte pas le calcul du fuseau horaire de Date_sunset , mais il affectera la sortie de Date () et d'autres fonctions de temps.
Si vous souhaitez gérer l'heure d'été, vous devez ajuster dynamiquement $ gmt_offset en fonction des dates, ou utiliser des bibliothèques de date et d'heure plus complexes (telles que DateTime combinées avec DateTimeZone ) pour calculer des moments plus précis.
date_sunset () ne prend pas en charge l'identification automatique de l'heure d'été. Si vous devez traiter plus précisément les fuseaux horaires, vous pouvez d'abord utiliser DateTime pour obtenir l'horodatage avec le fuseau horaire, puis le passer dans date_sunset () .
Exemple:
<?php
// Fuseau horaire cible
$timezone = new DateTimeZone('America/New_York');
// Spécifiez la date et l'heure
$date = new DateTime('now', $timezone);
// Obtenez l'horodatage
$timestamp = $date->getTimestamp();
// Coordonnées géographiques(New York)
$latitude = 40.7128;
$longitude = -74.0060;
// Obtenir le décalage du fuseau horaire(Heure)
$gmt_offset = $timezone->getOffset($date) / 3600;
// Obtenez l'heure du coucher du soleil
$sunset_time = date_sunset($timestamp, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, $gmt_offset);
echo "New York时间的日落时间是:$sunset_time";
?>
Cela peut ajuster automatiquement le décalage en fonction du fuseau horaire cible pour éviter les erreurs de calcul manuel.
Le paramètre $ gmt_offset de date_sunset () détermine le fuseau horaire de l'heure du coucher du soleil renvoyée.
Le passage manuel du décalage du fuseau horaire correct peut assurer des résultats précis.
La combinaison de DateTime et DateTimeZone permet une plus grande flexibilité dans la gestion des fuseaux horaires complexes et l'heure d'été.