(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
Description
date_sun_info(int
$timestamp, float
$latitude, float
$longitude): array
Liste de paramètres
-
timestamp
-
Horodatage Unix.
-
latitude
-
Latitude, en degrés.
-
longitude
-
Longitude, en degrés.
Valeurs de retour
Retourne un tableau en cas de succès ou false si une erreur survient.
La structure du tableau est détaillé dans la liste suivante :
-
sunrise
-
L'horodatage du levé du soleil (angle de zenith = 90°35').
-
sunset
-
L'horodatage du coucher du soleil (angle de zenith = 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 zenith = 96°). Il termine au
sunrise.
-
civil_twilight_end
-
La fin du crépuscule civil (angle de zenith = 96°). Elle commence au
sunset.
-
nautical_twilight_begin
-
Le début de l'aube nautique (angle de zenith = 102°). Il termine au
civil_twilight_begin.
-
nautical_twilight_end
-
La fin du crépuscule nautique (angle de zenith = 102°). Elle commence a
civil_twilight_end.
-
astronomical_twilight_begin
-
Le début de l'aube astronomique (angle de zenith = 108°). Il termine au
nautical_twilight_begin.
-
astronomical_twilight_end
-
La fin du crépuscule astronomique (angle de zenith = 108°). Elle commence a
nautical_twilight_end.
Les valeurs des éléments du tableau sont soit des
timestamps UNIX, false, si le soleil est sous le zenith
respectif pour la journée entière, ou true, si le soleil
est au dessus du zenith respectif pour toute la journée.
Historique
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 (Tromso, 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 :
Durée du jour: 13h 56s