W3docs

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 comme sunrise-sunset-php.

Syntaxe

date_sun_info(int $timestamp, float $latitude, float $longitude): array

Paramètres

ParamètreTypeDescription
$timestampintUn timestamp Unix (en UTC) identifiant le jour à interroger.
$latitudefloatLatitude du lieu, en degrés. Positif = nord, négatif = sud.
$longitudefloatLongitude 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
sunriseHeure à laquelle le soleil franchit l'horizon à l'aube.
sunsetHeure à laquelle le soleil franchit l'horizon au crépuscule.
transitMidi solaire — le soleil est à son point le plus haut.
civil_twilight_begin / civil_twilight_endSoleil à 6° sous l'horizon (activité en extérieur encore possible).
nautical_twilight_begin / nautical_twilight_endSoleil à 12° sous l'horizon (horizon visible en mer).
astronomical_twilight_begin / astronomical_twilight_endSoleil à 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 :

php— editable, runs on the server

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 par date_default_timezone_set(), alors définissez-le explicitement si vous avez besoin d'heures locales.

Fonctions associées

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.

Pratique

Pratique
Que fait la fonction 'date_sun_info' en PHP ?
Que fait la fonction 'date_sun_info' en PHP ?
Was this page helpful?