date_sun_info()
Apprenez comment date_sun_info() de PHP retourne les heures de lever, coucher du soleil et de crépuscule pour une date et un lieu donnés.
Introduction
La fonction date_sun_info() de PHP retourne les heures de lever, coucher du soleil, de transit et de crépuscule pour une date et une position géographique spécifiques. Au lieu de récupérer des données solaires depuis un service externe, vous passez un horodatage et une paire de coordonnées pour obtenir un tableau de timestamps Unix prêt à l'emploi. Cette page couvre sa syntaxe, ses paramètres, ses valeurs de retour et un exemple complet fonctionnel.
Remarque :
date_sun_info()a été dépréciée dans PHP 8.1 et supprimée dans PHP 8.2. Ce tutoriel est fourni pour la maintenance de code existant. Pour les applications PHP modernes, envisagez un service externe (tel que l'API Sunrise-Sunset) ou une bibliothèque dédiée commesunrise-sunset-php.
Syntaxe
date_sun_info(int $timestamp, float $latitude, float $longitude): arrayParamètres
| Paramètre | Type | Description |
|---|---|---|
$timestamp | int | Un timestamp Unix (en UTC) identifiant le jour à interroger. |
$latitude | float | Latitude du lieu, en degrés. Positif = nord, négatif = sud. |
$longitude | float | Longitude du lieu, en degrés. Positif = est, négatif = ouest. |
Valeur de retour
La fonction retourne un tableau associatif de timestamps Unix. Chaque clé marque un événement solaire pour ce jour aux coordonnées données :
| Clé | Signification |
|---|---|
sunrise | Heure à laquelle le soleil franchit l'horizon à l'aube. |
sunset | Heure à laquelle le soleil franchit l'horizon au crépuscule. |
transit | Midi solaire — le soleil est à son point le plus haut. |
civil_twilight_begin / civil_twilight_end | Soleil à 6° sous l'horizon (activité en extérieur encore possible). |
nautical_twilight_begin / nautical_twilight_end | Soleil à 12° sous l'horizon (horizon visible en mer). |
astronomical_twilight_begin / astronomical_twilight_end | Soleil à 18° sous l'horizon (ciel entièrement sombre). |
Si le soleil ne se lève jamais ou ne se couche jamais ce jour-là (par exemple, les régions polaires en été ou en hiver), la valeur concernée est true (le soleil est visible toute la journée) ou false (le soleil ne se lève jamais) au lieu d'un timestamp.
Utilisation de la fonction date_sun_info()
Comme le premier argument est un timestamp Unix, l'approche la plus simple est de créer un objet DateTime pour le jour souhaité et de passer son timestamp via getTimestamp(). Le flux ressemble à ceci :
graph TD;
A[Create DateTime object] --> B[Get timestamp for the date];
B --> C[Call date_sun_info with timestamp + coordinates];
C --> D[Read sunrise / sunset / twilight from the result];Voici un exemple complet pour Londres, Royaume-Uni :
Dans cet exemple, nous créons un objet DateTime qui représente une date spécifique, et nous spécifions la latitude et la longitude de Londres, Royaume-Uni. Nous appelons ensuite la fonction date_sun_info() en lui passant le timestamp de l'objet DateTime, ainsi que la latitude et la longitude.
La fonction date_sun_info() retourne un tableau contenant des informations sur le lever, le coucher du soleil et d'autres horaires associés pour la date et le lieu spécifiés. Voici un exemple de sortie :
Array
(
[sunrise] => 1646242025
[sunset] => 1646282555
[transit] => 1646262290
[civil_twilight_begin] => 1646239733
[civil_twilight_end] => 1646284847
[nautical_twilight_begin] => 1646235838
[nautical_twilight_end] => 1646288742
[astronomical_twilight_begin] => 1646231998
[astronomical_twilight_end] => 1646292582
)Les valeurs sont des timestamps Unix bruts, donc pour les afficher, vous formatez chacun avec date() ou date_format() :
<?php
$sun_info = date_sun_info(strtotime('2023-03-03'), 51.5074, -0.1278);
echo 'Sunrise: ' . date('H:i:s', $sun_info['sunrise']) . "\n";
echo 'Sunset: ' . date('H:i:s', $sun_info['sunset']) . "\n";
?>Remarque sur les fuseaux horaires : La fonction attend un timestamp Unix (UTC). Les heures retournées sont également des timestamps UTC, calculés à partir des coordonnées fournies, indépendamment du fuseau horaire local de votre serveur. Lorsque vous les formatez avec
date(), la sortie utilise le fuseau horaire défini pardate_default_timezone_set(), alors définissez-le explicitement si vous avez besoin d'heures locales.
Fonctions associées
date_sunrise()— retourne uniquement l'heure du lever du soleil pour un lieu.date_sunset()— retourne uniquement l'heure du coucher du soleil pour un lieu.- PHP Date and Time — aperçu des outils de date/heure de PHP.
- PHP Time Zones — comment PHP gère les fuseaux horaires.
Conclusion
date_sun_info() retourne les heures de lever, coucher du soleil, de transit et les trois phases de crépuscule pour une date et un lieu donnés sous forme de tableau de timestamps Unix UTC. Passez un timestamp ainsi que la latitude et la longitude, puis formatez les valeurs retournées avec date() pour les afficher. Elle est pratique pour la météo, la planification et les fonctionnalités tenant compte de la localisation — mais n'oubliez pas qu'elle a été supprimée dans PHP 8.2, alors utilisez une API externe ou une bibliothèque pour du code moderne.