(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
$timestamp
, float $latitude
, float $longitude
): array
timestamp
Horodatage Unix.
latitude
Latitude, en degrés.
longitude
Longitude, en degrés.
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
sunset
transit
civil_twilight_begin
sunrise
.
civil_twilight_end
sunset
.
nautical_twilight_begin
civil_twilight_begin
.
nautical_twilight_end
civil_twilight_end
.
astronomical_twilight_begin
nautical_twilight_begin
.
astronomical_twilight_end
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.
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
$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