date_sunset

(PHP 5, PHP 7, PHP 8)

date_sunset Retourne l'heure de coucher du soleil pour un jour et un endroit donnés

Avertissement

Cette fonction est OBSOLÈTE depuis PHP 8.1.0. Dépendre de cette fonction est fortement déconseillé. L'utilisation de date_sun_info() est encouragé à la place.

Description

date_sunset(
    int $timestamp,
    int $returnFormat = SUNFUNCS_RET_STRING,
    ?float $latitude = null,
    ?float $longitude = null,
    ?float $zenith = null,
    ?float $utcOffset = null
): string|int|float|false

La fonction date_sunset() retourne l'heure de coucher du soleil pour un jour (spécifié en tant que timestamp Unix) et un endroit donnés.

Liste de paramètres

timestamp

Le timestamp Unix du jour pour lequel l'heure du coucher du soleil est donnée.

returnFormat

Constantes pour le paramètre returnFormat
Constante Description Exemple
SUNFUNCS_RET_STRING Retourne le résultat sous la forme d'une chaîne de caractères 16:46
SUNFUNCS_RET_DOUBLE Retourne le résultat sous la forme d'un nombre décimal 16.78243132
SUNFUNCS_RET_TIMESTAMP Retourne le résultat sous la forme d'un entier (timestamp) 1095034606

latitude

Par défaut, c'est le Nord. Passez une valeur négative pour le Sud. Voir aussi date.default_latitude.

longitude

Par défaut, c'est l'Est. Passez une valeur négative pour l'Ouest. Voir aussi date.default_longitude.

zenith

zenith est l'angle entre le centre du soleil et la ligne perpendiculaire à la surface de la terre. Par défaut date.sunset_zenith

Valeurs communes d'angle zenith
Angle Description
90°50' Coucher du soleil: Le point où le soleil devient invisible.
96° Crépuscule civil: conventionnellement utilisé pour signifier la fin du crépuscule.
102° Crépuscule nautique: le point de fin de l'horizon étant visible en mer.
108° Crépuscule astronomique: le point où le soleil finit d'être la source de toute illumination.

utcOffset

Spécifié en heures. Le utcOffset est ignoré, si returnFormat est SUNFUNCS_RET_TIMESTAMP.

Valeurs de retour

Retourne l'heure de coucher du soleil dans le returnFormat spécifié ou false si une erreur survient. Une raison possible de l'échec est que le le soleil ne se couche pas, ce qui se passe à l'intérieur des cercles polaires pour une partie de l'année.

Erreurs / Exceptions

Chaque appel à une fonction date/heure générera un diagnostic de type E_WARNING si le fuseau horaire n'est pas valide. Voir aussi date_default_timezone_set()

Historique

Version Description
8.1.0 Cette fonction a été rendue obsolète en faveur de date_sun_info().
8.0.0 latitude, longitude, zenith et utcOffset sont désormais nullable.

Exemples

Exemple #1 Exemple avec date_sunset()

<?php

/* Calcul l'heure du coucher du soleil pour Lisbonne, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset:1 GMT
*/

echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

?>

Résultat de l'exemple ci-dessus est similaire à :

Mon Dec 20 2004, sunset time : 18:13

Exemple #2 Pas de coucher du soleil

<?php
$solstice
= strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>

L'exemple ci-dessus va afficher :

bool(false)

Voir aussi

  • 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

add a note add a note

User Contributed Notes 3 notes

up
1
matt at mctsoft dot net
5 years ago
yes SUNFUNCS_RET_TIMESTAMP does return GMT(0) time

so something like...

$arr = localtime(date_sunset(time(),SUNFUNCS_RET_TIMESTAMP,51.5,0)); // London

$hh = $arr[2];
$mm = $arr[1];

Will give figure out your localtime and daylight saving (BST)
up
-1
nospam at nomail dot com
6 years ago
maybe I am wrong, but I think

SUNFUNCS_RET_TIMESTAMP     return GMT(0) time

SUNFUNCS_RET_STRING     Return local time
SUNFUNCS_RET_DOUBLE     Return local time
up
-25
michael at dayah dot com
18 years ago
I use an IP to location database to determine the visitor's approximate latitude and longitude and then serve them a day or night color scheme based on whether it is before civil dawn or dusk. I've had problems when not specifying the timezone, specifically a 1 hour error, so I use GMT.

<?php
date_default_timezone_set
("GMT");

function
scheme() {
       
$sunrise = date_sunrise(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
       
$sunset = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
       
$now = date("H") + date("i") / 60 + date("s") / 3600;

        if (
$sunrise < $sunset)
                if ((
$now > $sunrise) && ($now < $sunset)) return "day";
                else return
"night";
        else
                if ((
$now > $sunrise) || ($now < $sunset)) return "day";
                else return
"night";
}
?>
To Top