logo oujood
🔍

La fonction PHP date_sunset() pour calculer l'heure du coucher du soleil

Apprenez à utiliser la fonction date_sunset() pour déterminer précisément l'heure du coucher du soleil en fonction des coordonnées géographiques et du fuseau horaire

OUJOOD.COM

PHP cours tutorial

La fonction date_sunset() : calculer le coucher du soleil en PHP

PHP Version : 5+
PHP Changelog : PHP 5.1 introduit la gestion des erreurs de fuseau horaire E_STRICT et E_NOTICE.
Elle est OBSOLÈTE depuis PHP 8.1.0. L'utilisation de cette fonction est fortement déconseillée. Privilégiez la fonction date_sun_info() à la place.

La fonction date_sunset() permet de calculer et retourner l'heure précise du coucher du soleil pour une journée spécifique et un emplacement géographique donné. Cette fonction utilise des calculs astronomiques basés sur les coordonnées géographiques (latitude et longitude), le fuseau horaire et l'angle zénithal pour déterminer le moment exact où le soleil passe sous l'horizon.

Cette fonctionnalité est particulièrement utile pour les applications météorologiques, les sites de photographie, les applications agricoles, les systèmes domotiques, ou tout projet nécessitant le calcul des heures de luminosité naturelle.

Syntaxe de la fonction date_sunset()

date_sunset(timestamp, format, latitude, longitude, zenith, gmt_offset)

Liste détaillée des paramètres de date_sunset()

ParamètreDescription détaillée
timestampObligatoire. Le timestamp Unix du jour pour lequel vous souhaitez calculer l'heure du coucher du soleil. Utilisez time() pour le jour actuel ou mktime() pour une date spécifique.
formatFacultatif. Définit le format de retour du résultat :
* SUNFUNCS_RET_STRING : Retourne une chaîne de caractères au format heure (exemple : 16:46)
* SUNFUNCS_RET_DOUBLE : Retourne un nombre décimal représentant l'heure (exemple : 16.78243132)
* SUNFUNCS_RET_TIMESTAMP : Retourne un timestamp Unix entier (exemple : 1095034606)
latitudeFacultatif. La latitude géographique en degrés décimaux. Valeurs positives pour l'hémisphère Nord, valeurs négatives pour l'hémisphère Sud. Exemple : Paris = 48.8566°N
longitudeFacultatif. La longitude géographique en degrés décimaux. Valeurs positives pour l'Est du méridien de Greenwich, valeurs négatives pour l'Ouest. Exemple : Paris = 2.3522°E
zenithFacultatif. L'angle zénithal en degrés. La valeur par défaut est 90.833° (coucher civil). D'autres valeurs : 96° (crépuscule nautique), 102° (crépuscule astronomique)
gmt_offsetFacultatif. Décalage horaire par rapport au GMT en heures. Pour la France en hiver : +1, en été : +2

Note importante : Chaque appel à une fonction date/heure peut générer un message E_NOTICE si le fuseau horaire n'est pas valide, et/ou un message E_STRICT ou E_WARNING si vous utilisez la configuration système ou la variable d'environnement TZ. Il est recommandé de toujours définir le fuseau horaire avec date_default_timezone_set().


Définition du zénith en astronomie :
En astronomie, le zénith (de l'arabe zana'a, signifiant "monter") désigne le point d'intersection entre la verticale d'un lieu donné et la sphère céleste. Le zénith représente le point situé exactement au-dessus de notre tête sur la verticale du lieu d'observation. L'angle zénithal est crucial pour calculer précisément les heures de lever et coucher du soleil en tenant compte de la réfraction atmosphérique.

Exemples pratiques d'utilisation de date_sunset()

Exemple 1 : Calcul basique du coucher du soleil pour Paris

Cet exemple montre comment calculer simplement l'heure du coucher du soleil pour la ville de Paris en utilisant ses coordonnées géographiques exactes. Le résultat est retourné sous forme de chaîne de caractères lisible.

  📋 Copier le code

<?php
// Définition des coordonnées géographiques de Paris, France
// Latitude: 48.833° Nord (valeur positive pour hémisphère Nord)
// Longitude: 2.333° Est (valeur positive pour l'Est du méridien)
// Zenith: 90° (angle standard pour le coucher civil du soleil)
// GMT Offset: +1 heure (fuseau horaire d'hiver pour la France)

echo 'Le ' . date("d M Y") . ', coucher du soleil à : ' . date_sunset(time(), SUNFUNCS_RET_STRING, 48.833, 2.333, 90, 1);

// La fonction time() retourne le timestamp Unix actuel
// SUNFUNCS_RET_STRING retourne l'heure au format HH:MM
?>

Exemple 2 : Calcul avec différents formats de retour

Cet exemple démontre les trois formats de retour disponibles pour la fonction date_sunset(), permettant d'adapter le résultat selon vos besoins spécifiques.

  📋 Copier le code

<?php
// Coordonnées de Marseille, France
$latitude = 43.2965;
$longitude = 5.3698;
$zenith = 90.833;
$gmt_offset = 1;

// Format STRING : retourne une chaîne "HH:MM"
$sunset_string = date_sunset(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $gmt_offset);
echo "Format STRING : " . $sunset_string . "<br>";

// Format DOUBLE : retourne un nombre décimal (heures.fraction)
$sunset_double = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $zenith, $gmt_offset);
echo "Format DOUBLE : " . $sunset_double . "<br>";

// Format TIMESTAMP : retourne un timestamp Unix exploitable
$sunset_timestamp = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zenith, $gmt_offset);
echo "Format TIMESTAMP : " . date('d/m/Y H:i:s', $sunset_timestamp) . "<br>";
?>

Exemple 3 : Alternative moderne avec date_sun_info()

La fonction date_sun_info() représente l'alternative moderne et recommandée pour remplacer date_sunset(). Elle offre plus d'informations sur les différentes phases du jour et gère automatiquement les fuseaux horaires définis avec date_default_timezone_set().

  📋 Copier le code

<?php
// Définition des coordonnées géographiques dans un tableau associatif
$coordinates = array(
    'lat' => 48.833,  // Latitude de Paris
    'lon' => 2.333,   // Longitude de Paris
);

// Configuration du fuseau horaire (obligatoire pour éviter les erreurs)
date_default_timezone_set('Europe/Paris');

// Récupération de toutes les informations solaires pour aujourd'hui
$sun_info = date_sun_info(time(), $coordinates['lat'], $coordinates['lon']);

// Définition du format d'affichage souhaité
$format = 'd M Y, H:i:s';

// Conversion du timestamp de coucher en format lisible
$sunset_time = date($format, $sun_info['sunset']);

// Affichage du résultat
echo 'Le ' . date($format) . ', coucher du soleil à : ' . $sunset_time;

// Autres informations disponibles dans $sun_info :
// sunrise, transit, sunset, civil_twilight_begin, civil_twilight_end
?>

Assurez-vous d'ajuster le fuseau horaire avec date_default_timezone_set() selon votre emplacement géographique. Le code ci-dessus utilise 'Europe/Paris' comme exemple. Vous pouvez le remplacer par d'autres fuseaux comme 'Europe/London', 'America/New_York', 'Asia/Tokyo', etc.

Cette approche moderne utilise date_sun_info() pour obtenir un tableau complet d'informations sur le soleil (lever, transit, coucher, crépuscules), puis utilise la fonction date() pour formater l'heure du coucher du soleil selon le format souhaité.

Résultat de l'exécution

L'exemple ci-dessus affichera un résultat similaire à :

Le 15 Jan 2026, 09:48:47, coucher du soleil à : 15 Jan 2026, 17:21:41

Exemple 4 : Calcul pour plusieurs villes simultanément

Cet exemple avancé montre comment calculer les heures de coucher du soleil pour plusieurs villes européennes en une seule exécution.

  📋 Copier le code

<?php
// Tableau des villes avec leurs coordonnées géographiques
$villes = array(
    'Paris' => array('lat' => 48.8566, 'lon' => 2.3522, 'tz' => 'Europe/Paris'),
    'Londres' => array('lat' => 51.5074, 'lon' => -0.1278, 'tz' => 'Europe/London'),
    'Berlin' => array('lat' => 52.5200, 'lon' => 13.4050, 'tz' => 'Europe/Berlin'),
    'Madrid' => array('lat' => 40.4168, 'lon' => -3.7038, 'tz' => 'Europe/Madrid')
);

// Boucle pour calculer le coucher du soleil dans chaque ville
foreach ($villes as $nom_ville => $coords) {
    date_default_timezone_set($coords['tz']);
    $sun_info = date_sun_info(time(), $coords['lat'], $coords['lon']);
    $sunset = date('H:i', $sun_info['sunset']);
    echo "$nom_ville : coucher du soleil à $sunset<br>";
}
?>

Points importants à retenir

  • La fonction date_sunset() est obsolète depuis PHP 8.1 et doit être remplacée par date_sun_info()
  • Les coordonnées géographiques précises sont essentielles pour un calcul exact
  • Le fuseau horaire doit toujours être défini pour éviter les erreurs
  • L'angle zénithal influence le moment exact calculé (civil, nautique, astronomique)
  • La fonction date_sun_info() offre plus d'informations : lever, transit, coucher et crépuscules

Regardez aussi : La fonction date() | La fonction date_sun_info()

Référence complète des fonctions de date/heure de PHP

Par carabde | Mis à jour le 31 décembre 2025