# 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

### 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 dont la structure du tableau est détaillée 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

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.

### 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