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 wiesunrise-sunset-phpin Betracht ziehen.
Syntax
date_sun_info(int $timestamp, float $latitude, float $longitude): arrayParameter
| Parameter | Typ | Beschreibung |
|---|---|---|
$timestamp | int | Ein Unix-Zeitstempel (in UTC), der den abzufragenden Tag angibt. |
$latitude | float | Breitengrad des Standorts in Grad. Positiv = Norden, negativ = Süden. |
$longitude | float | Lä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üssel | Bedeutung |
|---|---|
sunrise | Zeitpunkt, zu dem die Sonne bei Tagesanbruch den Horizont überschreitet. |
sunset | Zeitpunkt, zu dem die Sonne bei Abenddämmerung den Horizont überschreitet. |
transit | Sonnennittag — die Sonne ist auf ihrem höchsten Punkt. |
civil_twilight_begin / civil_twilight_end | Sonne 6° unter dem Horizont (Outdoor-Aktivitäten noch möglich). |
nautical_twilight_begin / nautical_twilight_end | Sonne 12° unter dem Horizont (Horizont auf See sichtbar). |
astronomical_twilight_begin / astronomical_twilight_end | Sonne 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:
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 durchdate_default_timezone_set()festgelegt wurde. Setzen Sie diese daher explizit, wenn Sie lokale Uhrzeiten benötigen.
Verwandte Funktionen
date_sunrise()— gibt nur die Sonnenaufgangszeit für einen Standort zurück.date_sunset()— gibt nur die Sonnenuntergangszeit für einen Standort zurück.- PHP Date and Time — Überblick über PHPs Datums-/Zeitmöglichkeiten.
- PHP Time Zones — wie PHP Zeitzonen verwaltet.
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.