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 — Liefert die Uhrzeit des Sonnenuntergangs für den angegebenen Tag und Ort
Diese Funktion ist seit PHP 8.1.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieser Funktion wird dringend abgeraten. Stattdessen sollte date_sun_info() verwendet werden.
$timestamp
,$returnFormat
= SUNFUNCS_RET_STRING
,$latitude
= null
,$longitude
= null
,$zenith
= null
,$utcOffset
= null
date_sunset() gibt die Uhrzeit des Sonnenuntergangs für
den angegebenen Tag (angegeben als timestamp
) und
Ort zurück.
timestamp
Der Zeitstempel des Tages, für den die Uhrzeit des Sonnenuntergangs ermittelt wird.
returnFormat
Konstante | Beschreibung | Beispiel |
---|---|---|
SUNFUNCS_RET_STRING | Gibt das Ergebnis als String zurück | 16:46 |
SUNFUNCS_RET_DOUBLE | Gibt das Ergebnis als Float zurück | 16.78243132 |
SUNFUNCS_RET_TIMESTAMP | Gibt das Ergebnis als Int zurück (Zeitstempel) | 1095034606 |
latitude
Voreingestellt ist Nord, für Süd muss ein negativer Wert übergeben werden. Siehe auch: date.default_latitude
longitude
Voreingestellt ist Ost, für West muss ein negativer Wert übergeben werden. Siehe auch: date.default_longitude
zenith
zenith
ist der Winkel zwischen dem Mittelpunkt
der Sonne und einer Linie senkrecht zur Erdoberfläche. Voreingestellt
ist date.sunset_zenith
Winkel | Beschreibung |
---|---|
90°50' | Sonnenuntergang: der Punkt, an dem die Sonne aus dem Blickfeld verschwindet. |
96° | Bürgerliche Dämmerung: wird üblicherweise verwendet, um das Ende der Abenddämmerung zu kennzeichnen. |
102° | Nautische Dämmerung: der Punkt, an dem der Horizont auf See nicht mehr sichtbar ist. |
108° | Astronomische Dämmerung: Der Punkt, an dem die Sonne aufhört, die Quelle von Licht zu sein. |
utcOffset
Wird in Stunden angegeben.
Wenn returnFormat
SUNFUNCS_RET_TIMESTAMP
ist, wird
utcOffset
ignoriert.
Gibt bei Erfolg die Uhrzeit des Sonnenuntergangs im angegebenen
returnFormat
zurück. Bei einem Fehler wird false
zurückgegeben. Ein
möglicher Grund für einen Fehler ist, dass die Sonne überhaupt nicht
untergeht, was innerhalb der Polargebiete während eines Teils des Jahres
der Fall ist.
Wenn die Zeitzone ungültig ist, wird bei jedem Aufruf einer Datums/Zeit-Funktion
ein Fehler der Stufe E_WARNING
erzeugt. Siehe auch
date_default_timezone_set()
Version | Beschreibung |
---|---|
8.1.0 | Diese Funktion ist veraltet und wurde durch date_sun_info() ersetzt. |
8.0.0 |
latitude , longitude ,
zenith und utcOffset
sind nun nullable (akzeptieren den null -Wert).
|
Beispiel #1 date_sunset()-Beispiel
<?php
/* Berechnung der Uhrzeit des Sonnenuntergangs für Lissabon, Portugal
Breitengrad: 38.4 Nord
Längengrad: 9 West
Zenit ~= 90
Zeitverschiebung: +1 GMT
*/
echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Mon Dec 20 2004, sunset time : 18:13
Beispiel #2 Kein Sonnenuntergang
<?php
$solstice = strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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";
}
?>