Signatur
Beschreibung
date_sun_info() berechnet anhand eines Unix-Timestamps sowie der geografischen Koordinaten (Breitengrad und Längengrad) eine Reihe astronomisch relevanter Zeitpunkte rund um die Sonne. Das Ergebnis-Array enthält Unix-Timestamps für Sonnenaufgang, Sonnenuntergang, Sonnenhöchststand sowie die verschiedenen Dämmerungsphasen (bürgerliche, nautische und astronomische Dämmerung).
Die Funktion ist besonders nützlich für Anwendungen, die tageszeitabhängige Logik benötigen – etwa Smart-Home-Steuerungen, Außenbeleuchtungssysteme, Fotografen-Apps (goldene Stunde) oder Wetterportale. Da alle Rückgabewerte als Unix-Timestamps vorliegen, lassen sie sich direkt mit date(), strtotime() oder DateTime-Objekten weiterverarbeiten.
Für Orte, an denen die Sonne an bestimmten Tagen nicht auf- oder untergeht (z. B. Polarnacht, Polartag), gibt die Funktion für die betroffenen Schlüssel false zurück. Liegt die Sonne dauerhaft über oder unter dem Horizont, werden für einzelne Schlüssel true zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timestamp Pflicht | int | Unix-Timestamp des Datums, für das die Sonneninformationen berechnet werden sollen. Uhrzeit-Anteile werden ignoriert; relevant ist nur das Datum. | |
| $latitude Pflicht | float | Geografischer Breitengrad des Standorts in Dezimalgrad. Positive Werte stehen für nördliche Breiten, negative für südliche Breiten (z. B. 52.52 für Berlin). |
|
| $longitude Pflicht | float | Geografischer Längengrad des Standorts in Dezimalgrad. Positive Werte stehen für östliche Längen, negative für westliche Längen (z. B. 13.405 für Berlin). |
Rückgabewert
Gibt ein assoziatives Array zurück, das folgende Schlüssel enthält (alle Werte sind Unix-Timestamps oder false/true bei Sonderfällen):
sunrise– Zeitpunkt des Sonnenaufgangssunset– Zeitpunkt des Sonnenuntergangstransit– Zeitpunkt des Sonnenhöchststands (Sonnenmittag)civil_twilight_begin– Beginn der bürgerlichen Morgendämmerung (Sonne 6° unter dem Horizont)civil_twilight_end– Ende der bürgerlichen Abenddämmerungnautical_twilight_begin– Beginn der nautischen Morgendämmerung (Sonne 12° unter dem Horizont)nautical_twilight_end– Ende der nautischen Abenddämmerungastronomical_twilight_begin– Beginn der astronomischen Morgendämmerung (Sonne 18° unter dem Horizont)astronomical_twilight_end– Ende der astronomischen Abenddämmerung
Beispiele
Sonnenauf- und -untergang für Berlin ausgeben
<?php
// Koordinaten Berlin
$latitude = 52.5200;
$longitude = 13.4050;
$timestamp = mktime(0, 0, 0, 6, 21, 2024); // Sommersonnenwende 2024
$info = date_sun_info($timestamp, $latitude, $longitude);
echo 'Sonnenaufgang: ' . date('H:i:s', $info['sunrise']) . PHP_EOL;
echo 'Sonnenhöchststand: ' . date('H:i:s', $info['transit']) . PHP_EOL;
echo 'Sonnenuntergang: ' . date('H:i:s', $info['sunset']) . PHP_EOL;
Alle Dämmerungsphasen anzeigen und Sonderfälle behandeln
<?php
// Koordinaten Tromsø, Norwegen (Polarnacht möglich)
$latitude = 69.6496;
$longitude = 18.9560;
$timestamp = mktime(0, 0, 0, 12, 21, 2023); // Wintersonnenwende
$info = date_sun_info($timestamp, $latitude, $longitude);
$labels = [
'sunrise' => 'Sonnenaufgang',
'sunset' => 'Sonnenuntergang',
'transit' => 'Sonnenhöchststand',
'civil_twilight_begin' => 'Bürgerl. Dämmerung Beginn',
'civil_twilight_end' => 'Bürgerl. Dämmerung Ende',
'nautical_twilight_begin' => 'Nautische Dämmerung Beginn',
'nautical_twilight_end' => 'Nautische Dämmerung Ende',
'astronomical_twilight_begin'=> 'Astronom. Dämmerung Beginn',
'astronomical_twilight_end' => 'Astronom. Dämmerung Ende',
];
foreach ($labels as $key => $label) {
$value = $info[$key];
if ($value === false) {
$display = 'Tritt heute nicht auf';
} elseif ($value === true) {
$display = 'Dauerhaft (ganztägig)';
} else {
$display = date('H:i:s T', $value);
}
echo $label . ': ' . $display . PHP_EOL;
}
// Wichtig · Fallstricke
Zeitzonen: Die zurückgegebenen Unix-Timestamps sind zeitzonenunabhängig. Die Ausgabe mit date() nutzt die aktuell gesetzte Zeitzone (date_default_timezone_set() bzw. php.ini). Für ortsrichtige Anzeige sollte die Zeitzone passend zur Koordinate gesetzt werden.
Sonderfälle (Polar-Regionen): An Standorten nahe der Pole kann die Sonne an bestimmten Tagen dauerhaft über oder unter dem Horizont stehen. In diesem Fall liefert die Funktion für betroffene Schlüssel true (dauerhaft über dem Horizont) oder false (dauerhaft unter dem Horizont). Anwendungen sollten diese Fälle explizit prüfen, bevor sie mit dem Wert als Timestamp rechnen.
Genauigkeit: Die Berechnungen basieren auf astronomischen Näherungsformeln und sind für typische Anwendungen ausreichend genau, eignen sich jedoch nicht für hochpräzise wissenschaftliche Berechnungen.