Aktueller Standort: Startseite> Neueste Artikel> Wie berechnet ich die Tagesdauer in Kombination mit Date_Sunset und Date_Sunrise -Funktionen?

Wie berechnet ich die Tagesdauer in Kombination mit Date_Sunset und Date_Sunrise -Funktionen?

gitbox 2025-05-28

In PHP, DATE_SUNRISE () und DATE_SUNSET () sind zwei sehr praktische Funktionen, die die Sonnenaufgang- und Sonnenuntergangszeiten des Tages basierend auf dem angegebenen Datum und der geografischen Koordinaten berechnen können. Durch die Kombination dieser beiden Funktionen können wir die Gesamtdauer des Tages sehr leicht berechnen.

Dies ist sehr wertvoll für Anwendungsszenarien, die die Anpassung der Geschäftslogik entsprechend der Tageslänge erfordern, z. B. automatische Lichtschaltungen, intelligente Farmen, Outdoor -Aktivitätsmanagement und andere Systeme.

Einführung in die Grundfunktionen

DATE_SUNRISE ()

 date_sunrise(int $timestamp, int $format = SUNFUNCS_RET_STRING, float $latitude = ini_get("date.default_latitude"), float $longitude = ini_get("date.default_longitude"), float $zenith = ini_get("date.sunrise_zenith"), float $gmt_offset = 0): string|int|float|false

DATE_SUNSET ()

 date_sunset(int $timestamp, int $format = SUNFUNCS_RET_STRING, float $latitude = ini_get("date.default_latitude"), float $longitude = ini_get("date.default_longitude"), float $zenith = ini_get("date.sunset_zenith"), float $gmt_offset = 0): string|int|float|false

Beispiel: Berechnen Sie die Dauer der Tageszeit eines bestimmten Tages

Lassen Sie uns ein konkretes Beispiel verwenden, um zu veranschaulichen, wie man die Tageszeit berechnet:

  • Datum: aktuelles Datum

  • Koordinaten: Peking City (Breitengrad 39.9042, Länge 116.4074)

  • Zeitzone: Ost Achter Bezirk (UTC+8)

 <?php

date_default_timezone_set('Asia/Shanghai');

$timestamp = time();
$latitude = 39.9042;
$longitude = 116.4074;
$gmt_offset = 8;

// Holen Sie sich Sonnenaufgang und Sonnenuntergangszeiten(von UNIX Kehren Sie in Zeitstempelform zurück)
$sunrise = date_sunrise($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, 90, $gmt_offset);
$sunset  = date_sunset($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, 90, $gmt_offset);

if ($sunrise !== false && $sunset !== false) {
    $dayLength = $sunset - $sunrise;

    // Konvertieren Sie in Stunde und Minute -Format
    $hours = floor($dayLength / 3600);
    $minutes = floor(($dayLength % 3600) / 60);

    echo "Sonnenaufgangszeit: " . date("H:i:s", $sunrise) . PHP_EOL;
    echo "Sonnenuntergangszeit: " . date("H:i:s", $sunset) . PHP_EOL;
    echo "Tageszeit: {$hours}Stunde{$minutes}Minute" . PHP_EOL;
} else {
    echo "无法计算日出或Sonnenuntergangszeit。Bitte überprüfen Sie die Koordinaten oder Datumseinstellungen。";
}

Dinge zu beachten

  1. Der Zenith -Winkel, der von Datum_Sunrise () und Datum_Sunset () verwendet wird, beträgt standardmäßig 90 Grad. Dies bedeutet, dass der Sonnenaufgang und der Sonnenuntergang aus der Position berechnet werden, an der der Horizont gerade gestiegen oder gefallen ist. Es kann bei Bedarf eingestellt werden.

  2. Der Zeitzonen -Offset ( $ GMT_Offset ) muss korrekt eingestellt werden, um sicherzustellen, dass die Ausgangszeit der lokalen Zeit entspricht.

  3. Wenn die zurückgegebenen Falsch sind , ist dies normalerweise auf besondere Umstände wie abnormale Koordinateneinstellung, extremer Tag oder extreme Nacht zurückzuführen.

Anwendungsweiterung

Diese Berechnungsmethode kann leicht in ein zeitempfindliches System eingebettet werden, wie z. B.:

  • Automatisches Beleuchtungssystem (wie Smart -Home -Controller)

  • Astronomische API -Schnittstelle wie https://api.gitbox.net/astro/dayLength?lat=39.9&lon=116.4

  • Widget im Freien im Freien, um Tagesänderungen in Echtzeit zu zeigen

Unter Verwendung dieser von PHP bereitgestellten Sonnenfunktionen können wir Zeitdaten, die sich auf den Solar -Altitude -Winkel beziehen, ohne auf externe Dienste stützen und dem System eine intelligentere Grundlage für das Urteilsvermögen bereitstellen.