(PHP 5 >= 5.1.2, PHP 7, PHP 8)
date_sun_info — Retourne un tableau avec les informations sur le lever/coucher du soleil ainsi que le début et la fin de l'aube
timestampHorodatage Unix.
latitudeLatitude, en degrés.
longitudeLongitude, en degrés.
Retourne un tableau dont la structure du tableau est détaillée dans la liste suivante :
sunriseL'horodatage du lever du soleil (angle de zénith = 90°35').
sunsetL'horodatage du coucher du soleil (angle de zénith = 90°35').
transitL'horodatage où le soleil est à son zénith, c'est-à-dire a atteint son point le plus haut.
civil_twilight_begin
Le début de l'aube civile (angle de zénith = 96°). Elle se termine au
sunrise.
civil_twilight_end
La fin du crépuscule civil (angle de zénith = 96°). Elle commence au
sunset.
nautical_twilight_begin
Le début de l'aube nautique (angle de zénith = 102°). Elle se termine au
civil_twilight_begin.
nautical_twilight_end
La fin du crépuscule nautique (angle de zénith = 102°). Elle commence au
civil_twilight_end.
astronomical_twilight_begin
Le début de l'aube astronomique (angle de zénith = 108°). Elle se termine au
nautical_twilight_begin.
astronomical_twilight_end
La fin du crépuscule astronomique (angle de zénith = 108°). Elle commence au
nautical_twilight_end.
Les valeurs des éléments du tableau sont soit des
horodatages UNIX, false, si le soleil est sous le zénith
respectif pour la journée entière, ou true, si le soleil
est au-dessus du zénith respectif pour toute la journée.
| Version | Description |
|---|---|
| 7.2.0 | Le calcul a été corrigé en tenant compte du minuit local au lieu du midi local, ce qui modifie légèrement les résultats. |
Exemple #1 Exemple avec date_sun_info()
<?php
date_default_timezone_set('Asia/Jerusalem');
$sun_info = date_sun_info(strtotime("2006-12-12"), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
echo "$key: " . date("H:i:s", $val) . "\n";
}L'exemple ci-dessus va afficher :
sunrise: 06:29:21 sunset: 16:36:00 transit: 11:32:41 civil_twilight_begin: 06:02:36 civil_twilight_end: 17:02:45 nautical_twilight_begin: 05:32:14 nautical_twilight_end: 17:33:08 astronomical_twilight_begin: 05:02:31 astronomical_twilight_end: 18:02:51
Exemple #2 Nuit polaire avec un peu de traitement
<?php
$tz = new \DateTimeZone('America/Anchorage');
$si = date_sun_info(strtotime("2022-12-21"), 70.21, -148.51);
foreach ($si as $key => $value) {
echo
match ($value) {
true => 'always',
false => 'never',
default => date_create("@{$value}")->setTimeZone($tz)->format( 'H:i:s T' ),
},
": {$key}",
"\n";
}L'exemple ci-dessus va afficher :
never: sunrise never: sunset 12:52:18 AKST: transit 10:53:19 AKST: civil_twilight_begin 14:51:17 AKST: civil_twilight_end 09:01:47 AKST: nautical_twilight_begin 16:42:48 AKST: nautical_twilight_end 07:40:47 AKST: astronomical_twilight_begin 18:03:49 AKST: astronomical_twilight_end
Exemple #3 Soleil de minuit (Tromsø, Norvège)
<?php
$si = date_sun_info(strtotime("2022-06-26"), 69.68, 18.94);
print_r($si);L'exemple ci-dessus va afficher :
Array
(
[sunrise] => 1
[sunset] => 1
[transit] => 1656240426
[civil_twilight_begin] => 1
[civil_twilight_end] => 1
[nautical_twilight_begin] => 1
[nautical_twilight_end] => 1
[astronomical_twilight_begin] => 1
[astronomical_twilight_end] => 1
)
Exemple #4 Calcul de la durée du jour (Kyiv)
<?php
$si = date_sun_info(strtotime('2022-08-26'), 50.45, 30.52);
$diff = $si['sunset'] - $si['sunrise'];
echo "Durée du jour: ",
floor($diff / 3600), "h ",
floor(($diff % 3600) / 60), "m\n";L'exemple ci-dessus va afficher :
Durée du jour: 13h 53m