Aktueller Standort: Startseite> Neueste Artikel> Kombination mit sun_info () (benutzerdefinierte Funktion), um mehr Sonnenscheininformationen auszugeben

Kombination mit sun_info () (benutzerdefinierte Funktion), um mehr Sonnenscheininformationen auszugeben

M66 2025-06-02

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.

Grundkenntnisse: DATE_SUNSET () und DATE_SUN_INFO ()

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.

Benutzerdefinierte Funktion: sun_info ()

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',
    ];
}

Beispiel Verwendung

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

Anwendung erweitern: Front-End-Anzeige und Linkintegration

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>';