date_sunset

(PHP 5, PHP 7, PHP 8)

date_sunsetLiefert die Uhrzeit des Sonnenuntergangs für den angegebenen Tag und Ort

Warnung

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.

Beschreibung

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

date_sunset() gibt die Uhrzeit des Sonnenuntergangs für den angegebenen Tag (angegeben als timestamp) und Ort zurück.

Parameter-Liste

timestamp

Der Zeitstempel des Tages, für den die Uhrzeit des Sonnenuntergangs ermittelt wird.

returnFormat

returnFormat-Konstanten
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

Gebräuchliche zenith-Winkel
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.

Rückgabewerte

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.

Fehler/Exceptions

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()

Changelog

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).

Beispiele

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)

Siehe auch

  • date_sun_info() - Liefert ein Array mit Informationen über Sonnenauf- und -untergang sowie Beginn und Ende der Dämmerung

add a note add a note

User Contributed Notes 3 notes

up
1
matt at mctsoft dot net
4 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
5 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
17 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