(PHP 5 >= 5.1.2, PHP 7, PHP 8)
date_sun_info — Liefert ein Array mit Informationen über Sonnenauf- und -untergang sowie Beginn und Ende der Dämmerung
timestamp
Ein Unix-Zeitstempel
latitude
Eine geografische Breite in Grad
longitude
Eine geografische Länge in Grad
Gibt bei Erfolg ein Array zurück. Bei einem Fehler wird false
zurückgegeben.
Die Struktur des Arrays wird in der folgenden Liste beschrieben:
sunrise
sunset
transit
civil_twilight_begin
sunrise
.
civil_twilight_end
sunset
.
nautical_twilight_begin
civil_twilight_begin
.
nautical_twilight_end
civil_twilight_end
.
astronomical_twilight_begin
nautical_twilight_begin
.
astronomical_twilight_end
nautical_twilight_end
.
Die Werte der Array-Elemente sind entweder UNIX-Zeitstempel, false
, wenn
die Sonne den ganzen Tag über unter dem jeweiligen Zenit steht, oder
true
, wenn die Sonne den ganzen Tag über dem jeweiligen Zenit steht.
Version | Beschreibung |
---|---|
7.2.0 | Die Berechnung wurde korrigiert und bezieht sich nun auf die lokale Mitternacht statt auf die lokale Mittagszeit, was die Ergebnisse leicht verändert. |
Beispiel #1 Ein date_sun_info()-Beispiel
<?php
$sun_info = date_sun_info(strtotime("2006-12-12"), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
echo "$key: " . date("H:i:s", $val) . "\n";
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
sunrise: 05:52:11 sunset: 15:41:21 transit: 10:46:46 civil_twilight_begin: 05:24:08 civil_twilight_end: 16:09:24 nautical_twilight_begin: 04:52:25 nautical_twilight_end: 16:41:06 astronomical_twilight_begin: 04:21:32 astronomical_twilight_end: 17:12:00
Beispiel #2 Polarnacht mit etwas Nachbearbeitung
<?php
$tz = new \DateTimeZone('America/Anchorage');
$si = date_sun_info(strtotime("2022-12-21"), 70.21, -148.51);
foreach ($si as $key => $value) {
echo
match ($value) {
true => 'always',
false => 'never',
default => date_create("@{$value}")->setTimeZone($tz)->format( 'H:i:s T' ),
},
": {$key}",
"\n";
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
never: sunrise never: sunset 12:52:18 AKST: transit 10:53:19 AKST: civil_twilight_begin 14:51:17 AKST: civil_twilight_end 09:01:47 AKST: nautical_twilight_begin 16:42:48 AKST: nautical_twilight_end 07:40:47 AKST: astronomical_twilight_begin 18:03:49 AKST: astronomical_twilight_end
Beispiel #3 Mitternachtssonne (Tromsø, Norwegen)
<?php
$si = date_sun_info(strtotime("2022-06-26"), 69.68, 18.94);
print_r($si);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [sunrise] => 1 [sunset] => 1 [transit] => 1656240426 [civil_twilight_begin] => 1 [civil_twilight_end] => 1 [nautical_twilight_begin] => 1 [nautical_twilight_end] => 1 [astronomical_twilight_begin] => 1 [astronomical_twilight_end] => 1 )
Beispiel #4 Berechnung der Länge des Tages (Kiew)
<?php
$si = date_sun_info(strtotime('2022-08-26'), 50.45, 30.52);
$diff = $si['sunset'] - $si['sunrise'];
echo "Länge des Tages: ",
floor($diff / 3600), "h ",
floor(($diff % 3600) / 60), "s\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Länge des Tages: 13h 56s