(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
timestampEin Unix-Zeitstempel
latitudeEine geografische Breite in Grad
longitudeEine geografische Länge in Grad
Gibt bei Erfolg ein Array zurück, dessen Struktur in der folgenden Liste beschrieben wird:
sunrisesunsettransitcivil_twilight_beginsunrise.
civil_twilight_endsunset.
nautical_twilight_begincivil_twilight_begin.
nautical_twilight_endcivil_twilight_end.
astronomical_twilight_beginnautical_twilight_begin.
astronomical_twilight_endnautical_twilight_end.
Die Werte der Array-Elemente sind entweder UNIX-Zeitstempel, false, wenn
die Sonne den ganzen Tag 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