In PHP ist DATE_SUNSET () eine sehr praktische Funktion zur Berechnung der Sonnenuntergangszeit basierend auf Datum und geografischer Lage. Die Verwendung von Datum_Sunset () allein erhält jedoch häufig nur begrenzte Informationen, z. B. die Rückgabe nur die Sonnenuntergangszeit. Um umfassendere Sonnenscheininformationen (wie Sonnenaufgang, Sonnenuntergang, Sonne Noon, Sonnenscheindauer usw.) zu erhalten, können wir eine benutzerdefinierte Funktion sun_info () zusammenfassen, um die Funktionen von DATE_SUN_INFO () und DATE_SUNSET () zu integrieren, um reichere sonnenbezogene Daten auszugeben.
Im Folgenden zeigen wir, wie die Funktion sun_info () implementiert und kombiniert date_sunset (), um detaillierte Sonnenscheininformationen zu erhalten und auszugeben.
Zunächst stellen wir kurz die Verwendung von zwei Schlüsselfunktionen vor:
DATE_SUNSET () : Erhält die Sonnenuntergangszeit für die angegebene Zeit und den geografischen Ort.
DATE_SUN_INFO () : Gibt ein Array mit detaillierten Informationen wie Sonnenaufgang, Sonnenuntergang, Abenddämmerung, Morgendämmerung, Sonne Noon usw. zurück.
Obwohl Date_Sun_info () umfassendere Funktionen aufweist, können wir die Konfigurierbarkeit von DATE_SUNSET () (z. B. verschiedene Zenith -Winkel) verwenden, um mehr detailliertere Daten zu erhalten.
Wir schreiben eine Funktion sun_info () , die Datum, Länge, Breiten- und Zeitzone als Parameter benötigt und ein strukturiertes Array zurückgibt, das die folgenden Informationen enthält:
Sonnenaufgangszeit
Sonnenuntergangszeit
Sonnenscheinlänge (Einheit: Minuten)
Sonne ist Mittagszeit
Dämmerungszeit
Morgendämmerzeit
function sun_info($date, $latitude, $longitude, $timezone = 'UTC') {
$timestamp = strtotime($date);
$sunData = date_sun_info($timestamp, $latitude, $longitude);
$sunset = date_sunset($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);
$sunrise = date_sunrise($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);
$daylightMinutes = round(($sunset - $sunrise) / 60);
// Konvertieren Sie in die angegebene Ausgangsausgangsausgabe
$dtZone = new DateTimeZone($timezone);
$format = function($ts) use ($dtZone) {
if (!$ts || $ts < 0) return 'N/A';
$dt = new DateTime("@$ts");
$dt->setTimezone($dtZone);
return $dt->format('H:i:s');
};
return [
'sunrise' => $format($sunData['sunrise']),
'sunset' => $format($sunData['sunset']),
'solar_noon' => $format($sunData['solar_noon']),
'civil_dawn' => $format($sunData['civil_twilight_begin']),
'civil_dusk' => $format($sunData['civil_twilight_end']),
'day_length' => $daylightMinutes . ' Minute',
];
}
Angenommen, Sie möchten die Rizhao -Informationen von Peking am 26. April 2025 erhalten. Sie können sie so nennen:
$info = sun_info('2025-04-26', 39.9042, 116.4074, 'Asia/Shanghai');
echo "Peking Die heutigen Sonneninformationen:<br>";
foreach ($info as $label => $value) {
echo ucfirst(str_replace('_', ' ', $label)) . ': ' . $value . '<br>';
}
Ein Ausgangsbeispiel kann wie folgt sein:
Beijing Die heutigen Sonneninformationen:
Sunrise: 05:21:32
Sunset: 18:57:20
Solar noon: 12:09:26
Civil dawn: 04:53:10
Civil dusk: 19:25:42
Day length: 456 Minute
Um diese Sonnenscheininformationen intuitiver anzuzeigen, können Sie den Ausgangseffekt weiter verschönern, indem Sie JavaScript oder Diagrammbibliothek kombinieren. Sie können auch einen Link auf der Seite integrieren, zum Beispiel:
echo '<a href="https://m66.net/sun?lat=39.9&lon=116.4&date=2025-04-26">Weitere Details von Rizhao finden Sie in Rizhao</a>';