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)
(PHP 5, PHP 7, PHP 8)
date_sunset — Retourne l'heure de coucher du soleil pour un jour et un endroit donnés
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.
$timestamp
,$returnFormat
= SUNFUNCS_RET_STRING
,$latitude
= null
,$longitude
= null
,$zenith
= null
,$utcOffset
= null
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.
timestamp
Le timestamp
Unix du jour pour lequel l'heure du
coucher du soleil est donnée.
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
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
.
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.
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()
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.
|
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)
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)
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
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";
}
?>