date_sun_info
(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
Liste de paramètres
timestamp
-
Horodatage Unix.
latitude
-
Latitude, en degrés.
longitude
-
Longitude, en degrés.
Valeurs de retour
Retourne un tableau dont la structure du tableau est détaillée dans la liste suivante :
sunrise
-
L'horodatage du lever du soleil (angle de zénith = 90°35').
sunset
-
L'horodatage du coucher du soleil (angle de zénith = 90°35').
transit
-
L'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.
Exemples
Exemple #1 Exemple avec date_sun_info()
<?php
$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: 05:52:11
sunset: 15:41:21
transit: 10:46:46
civil_twilight_begin: 05:24:08
civil_twilight_end: 16:09:24
nautical_twilight_begin: 04:52:25
nautical_twilight_end: 16:41:06
astronomical_twilight_begin: 04:21:32
astronomical_twilight_end: 17:12:00
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), "s\n";
L'exemple ci-dessus va afficher :