W3docs

date_sun_info()

Erfahren Sie, wie PHP date_sun_info() Sonnenaufgang, Sonnenuntergang, Transit und Dämmerungszeiten für ein Datum und einen Ort zurückgibt.

Einführung

PHPs date_sun_info()-Funktion gibt die Zeiten für Sonnenaufgang, Sonnenuntergang, Transit und Dämmerung für ein bestimmtes Datum und einen geografischen Standort zurück. Anstatt Sonnendaten von einem externen Dienst abzurufen, übergeben Sie einen Zeitstempel und ein Koordinatenpaar und erhalten ein fertiges Array mit Unix-Zeitstempeln. Diese Seite behandelt die Syntax, Parameter, Rückgabewerte und ein vollständiges funktionierendes Beispiel.

Hinweis: date_sun_info() wurde in PHP 8.1 als veraltet markiert und in PHP 8.2 entfernt. Dieses Tutorial dient der Wartung von Legacy-Code. Für moderne PHP-Anwendungen sollten Sie einen externen Dienst (wie die Sunrise-Sunset API) oder eine dedizierte Bibliothek wie sunrise-sunset-php in Betracht ziehen.

Syntax

date_sun_info(int $timestamp, float $latitude, float $longitude): array

Parameter

ParameterTypBeschreibung
$timestampintEin Unix-Zeitstempel (in UTC), der den abzufragenden Tag angibt.
$latitudefloatBreitengrad des Standorts in Grad. Positiv = Norden, negativ = Süden.
$longitudefloatLängengrad des Standorts in Grad. Positiv = Osten, negativ = Westen.

Rückgabewert

Die Funktion gibt ein assoziatives Array mit Unix-Zeitstempeln zurück. Jeder Schlüssel markiert ein Sonnenereignis für diesen Tag an den angegebenen Koordinaten:

SchlüsselBedeutung
sunriseZeitpunkt, zu dem die Sonne bei Tagesanbruch den Horizont überschreitet.
sunsetZeitpunkt, zu dem die Sonne bei Abenddämmerung den Horizont überschreitet.
transitSonnennittag — die Sonne ist auf ihrem höchsten Punkt.
civil_twilight_begin / civil_twilight_endSonne 6° unter dem Horizont (Outdoor-Aktivitäten noch möglich).
nautical_twilight_begin / nautical_twilight_endSonne 12° unter dem Horizont (Horizont auf See sichtbar).
astronomical_twilight_begin / astronomical_twilight_endSonne 18° unter dem Horizont (Himmel völlig dunkel).

Wenn die Sonne an diesem Tag nie auf- oder untergeht (z. B. in Polarregionen im Sommer oder Winter), ist der entsprechende Wert true (Sonne den ganzen Tag oben) oder false (Sonne geht nie auf) anstatt eines Zeitstempels.

Verwendung der date_sun_info()-Funktion

Da das erste Argument ein Unix-Zeitstempel ist, besteht der einfachste Ansatz darin, ein DateTime-Objekt für den gewünschten Tag zu erstellen und dessen Zeitstempel über getTimestamp() zu übergeben. Der Ablauf sieht folgendermaßen aus:

graph TD;
    A[Create DateTime object] --> B[Get timestamp for the date];
    B --> C[Call date_sun_info with timestamp + coordinates];
    C --> D[Read sunrise / sunset / twilight from the result];

Hier ist ein vollständiges Beispiel für London, UK:

php— editable, runs on the server

In diesem Beispiel erstellen wir ein DateTime-Objekt, das ein bestimmtes Datum repräsentiert, und geben den Breiten- und Längengrad von London, UK an. Anschließend rufen wir die date_sun_info()-Funktion auf und übergeben den Zeitstempel des DateTime-Objekts zusammen mit dem Breiten- und Längengrad.

Die date_sun_info()-Funktion gibt ein Array zurück, das Informationen über Sonnenaufgang, Sonnenuntergang und andere verwandte Zeiten für das angegebene Datum und den Standort enthält. Hier ist ein Beispiel der Ausgabe:

Array
(
    [sunrise] => 1646242025
    [sunset] => 1646282555
    [transit] => 1646262290
    [civil_twilight_begin] => 1646239733
    [civil_twilight_end] => 1646284847
    [nautical_twilight_begin] => 1646235838
    [nautical_twilight_end] => 1646288742
    [astronomical_twilight_begin] => 1646231998
    [astronomical_twilight_end] => 1646292582
)

Die Werte sind rohe Unix-Zeitstempel. Um sie anzuzeigen, formatieren Sie jeden mit date() oder date_format():

<?php
$sun_info = date_sun_info(strtotime('2023-03-03'), 51.5074, -0.1278);
echo 'Sunrise: ' . date('H:i:s', $sun_info['sunrise']) . "\n";
echo 'Sunset:  ' . date('H:i:s', $sun_info['sunset']) . "\n";
?>

Hinweis zu Zeitzonen: Die Funktion erwartet einen Unix-Zeitstempel (UTC). Die zurückgegebenen Zeiten sind ebenfalls UTC-Zeitstempel, berechnet aus den angegebenen Koordinaten unabhängig von der lokalen Zeitzone Ihres Servers. Wenn Sie sie mit date() formatieren, verwendet die Ausgabe die Zeitzone, die durch date_default_timezone_set() festgelegt wurde. Setzen Sie diese daher explizit, wenn Sie lokale Uhrzeiten benötigen.

Verwandte Funktionen

Fazit

date_sun_info() gibt Sonnenaufgang, Sonnenuntergang, Transit und die drei Dämmerungsphasen für ein bestimmtes Datum und einen Standort als Array von UTC-Unix-Zeitstempeln zurück. Übergeben Sie einen Zeitstempel sowie Breiten- und Längengrad, und formatieren Sie die zurückgegebenen Werte dann mit date() zur Anzeige. Die Funktion ist praktisch für Wetter-, Planungs- und standortbezogene Funktionen — denken Sie jedoch daran, dass sie in PHP 8.2 entfernt wurde. Greifen Sie daher in modernem Code auf eine externe API oder Bibliothek zurück.

Übung

Übung
Was macht die Funktion 'date_sun_info' in PHP?
Was macht die Funktion 'date_sun_info' in PHP?
Was this page helpful?