Bei der Entwicklung von Kalenderanwendungen oder Wettervorhersagefunktionen müssen wir häufig jeden Tag die Sonnenuntergangszeit anzeigen. Glücklicherweise hat PHP sehr bequeme Funktionen eingebaute, um uns zu helfen, Sonnenuntergangszeit zu erlangen, ohne sich auf komplexe APIs zu verlassen. In diesem Artikel werden Sie vermittelt, wie Sie PHP verwenden, um die nächsten 7 Tage Sonnenuntergangszeiten zu erhalten, und eignet sich zum direkten Anzeigen im Kalender.
PHP liefert die Funktion date_sunset () , mit der die Sonnenuntergangszeit des Tages basierend auf dem angegebenen Datum, geografischer Ort (Breitengrad und Längengrad) berechnet werden kann. Die grundlegende Anrufmethode lautet wie folgt:
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 40.7128, -74.0060);
echo "Die heutige Sonnenuntergangszeit ist:" . $sunset;
Parameter Beschreibung hier:
time () : aktueller Zeitstempel.
Sunfuncs_ret_string : Gibt das Zeitformat zurück (String).
40.7128 : Breitengrad (wie der Breitengrad von New York City).
-74.0060 : Länge.
Aber was wir wollen, ist die Sonnenuntergangszeit für die nächsten 7 Tage , also müssen wir uns ein wenig ausdehnen.
Der vollständige Beispielcode unten zeigt, wie Sie eine Liste der Sonnenuntergangszeiten für die nächste Woche herausholen:
<?php
date_default_timezone_set('America/New_York'); // Stellen Sie nach Bedarf die richtige Zeitzone ein
// Setzen Sie den geografischen Standort(Zum Beispiel New York)
$latitude = 40.7128;
$longitude = -74.0060;
$sunset_times = [];
for ($i = 0; $i < 7; $i++) {
$timestamp = strtotime("+$i day");
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90, // Die Sonne ist unter dem Horizont(Standardwert 90)
date("Z", $timestamp)
);
$sunset_times[] = [
'date' => date('Y-m-d', $timestamp),
'sunset' => $sunset
];
}
// Ausgangsergebnis
foreach ($sunset_times as $day) {
echo "Datum:" . $day['date'] . ",Sonnenuntergangszeit:" . $day['sunset'] . "<br>";
}
?>
DATE_DEFAULT_TIMEZONE_SET () muss korrekt festgelegt werden, andernfalls kann die zurückgegebene Sonnenuntergangszeit abgewichen sein.
Datum ("Z", $ timestamp) wird verwendet, um automatisch Tageslicht -Spar -Zeitänderungen übereinstimmen, die an verschiedenen Daten auftreten können.
90 ist der Standard -Sonnenhöhenwinkel und wird nicht empfohlen, sich zu ändern, es sei denn, es gibt besondere Bedürfnisse.
Nehmen wir an, Sie möchten die Sunset Time-Daten für die nächsten 7 Tage vom Server über eine Schnittstelle für die Verwendung von Front-End erhalten. Sie können eine einfache API wie folgt schreiben:
<?php
header('Content-Type: application/json');
date_default_timezone_set('America/New_York');
$latitude = 40.7128;
$longitude = -74.0060;
$sunset_times = [];
for ($i = 0; $i < 7; $i++) {
$timestamp = strtotime("+$i day");
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90,
date("Z", $timestamp)
);
$sunset_times[] = [
'date' => date('Y-m-d', $timestamp),
'sunset' => $sunset
];
}
echo json_encode($sunset_times);
?>
Das Front-End kann dann auf die Schnittstelle zugreifen, z. B.:
fetch('https://m66.net/api/sunset_times.php')
.then(response => response.json())
.then(data => {
console.log(data);
});
Auf diese Weise können Sie die Sonnenuntergangszeit der nächsten Woche in Ihrem Webkalender dynamisch anzeigen!
Durch DATE_SUNSET () können wir die Sonnenuntergangszeit in PHP sehr bequem berechnen, ohne sich auf APIs von Drittanbietern zu verlassen, die schnell, stabil und zuverlässig sind. Wenn Sie genauere astronomische Daten benötigen (z. B. unter Berücksichtigung der atmosphärischen Brechung, der Geländeverschluss usw.), können Sie in Zukunft auch in Betracht ziehen, professionelle astronomische Computerbibliotheken zu integrieren. Für allgemeine Anwendungsszenarien ist diese Methode jedoch mehr als genug.