Dans PHP, la fonction date_sunset () est utilisée pour calculer l'heure du coucher du soleil de l'heure et de la position spécifiées, renvoyant un horodatage ou une chaîne formatée. Cependant, dans certains cas, la fonction renvoie false , ce qui indique généralement qu'une erreur s'est produite ou un calcul a échoué. Cet article plongera dans plusieurs raisons courantes qui provoquent Date_sunset () pour retourner faux et comment éviter ces problèmes.
L'utilisation standard de date_sunset () est la suivante:
date_sunset(
int $timestamp,
int $returnFormat = 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 $gmtOffset = 0
): string|int|false
Si certains paramètres ne sont pas passés correctement, en particulier la latitude ( $ latitude ) et la longitude ( $ longitude ), la fonction peut retourner faux .
// Exemple d'erreur:Latitude et la longitude ne sont pas définies
$sunset = date_sunset(time());
if ($sunset === false) {
echo "Impossible de calculer l'heure du coucher du soleil";
}
Solution: assurez-vous que les valeurs valides de latitude et de longitude sont passées:
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 31.7667, 35.2333, 90, 2);
Si la latitude entrante n'est pas comprise entre -90 et 90, ou si la longitude n'est pas entre -180 et 180, la fonction ne sera pas gérée correctement et reviendra directement faux .
// Latitude et longitude imprimées
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 1234, 5678); // erreur
Assurez-vous que les paramètres respectent la véritable plage de coordonnées géographiques.
Le calcul interne utilisé par date_sunset () dépend de l'horodatage. Si l'horodatage dépasse la gamme d'entiers pris en charge par PHP (en particulier sur les systèmes 32 bits), FALS peut être retourné.
// Dépasser 32 Gamme d'horodatage du système de bits
$sunset = date_sunset(99999999999, SUNFUNCS_RET_STRING, 40.7128, -74.0060);
Il est recommandé d'utiliser le temps () ou le strtotime raisonnable () pour générer un horodatage légitime.
PHP permet de définir la latitude par défaut, la longitude et le zenith via le fichier php.ini . Si ces valeurs ne sont pas définies ou ne sont pas configurées de manière incorrecte, date_sunset () peut également ne pas fonctionner indirectement correctement.
echo ini_get('date.default_latitude');
echo ini_get('date.default_longitude');
Si la sortie est vide ou non numerique, ces paramètres doivent être passés manuellement dans le code.
Dans les régions polaires, le soleil ne se lève jamais ou ne se couche jamais à certaines périodes de l'année (comme la nuit polaire ou le jour du pôle Nord). Dans ce cas, date_sunset () peut également retourner faux car il n'y a pas de phénomène "coucher de soleil" ce jour-là.
// Emplacement dans le pôle Nord,Pas de coucher de soleil par jour
$sunset = date_sunset(strtotime("2025-01-01"), SUNFUNCS_RET_STRING, 89.9, 135.0);
Le dernier paramètre $ gmtoffset contrôle le décalage de GMT (UTC) en heures. Si la valeur est définie de manière déraisonnable, elle peut également conduire à des résultats non satisfaits.
Par exemple, le temps de Pékin devrait être de +8,0 . Si vous êtes défini sur -8,0 , vous pouvez obtenir un résultat incorrect ou faux .
DATE_SUNSET () est une fonction de temps très pratique, mais elle dépend de plusieurs paramètres, et toute erreur peut entraîner le retour de faux . L'utilisation correcte doit inclure:
Passez clairement les paramètres clés tels que l'horodatage , la latitude et la longitude
Vérifiez s'il y a des problèmes avec la configuration pertinente dans php.ini
Évitez les appels dans des conditions géographiques ou de temps extrêmes