Position actuelle: Accueil> Derniers articles> Combinaison avec Sun_info () (fonction personnalisée) pour produire plus d'informations sur le soleil

Combinaison avec Sun_info () (fonction personnalisée) pour produire plus d'informations sur le soleil

M66 2025-06-02

Dans PHP, Date_sunset () est une fonction très pratique pour calculer l'heure du coucher du soleil en fonction de la date et de l'emplacement géographique. Cependant, l'utilisation de Date_sunset () seule ne reçoit souvent que des informations limitées, telles que le retour uniquement de l'heure du coucher du soleil. Afin d'obtenir des informations de soleil plus complètes (telles que Sunrise, Sunset, Sun Noon, Sunshine Durée, etc.), nous pouvons encapsuler une fonction personnalisée Sun_info () pour intégrer les capacités de Date_sun_info () et Date_sunset () pour produire des données plus riches liées au soleil.

Ci-dessous, nous montrerons comment implémenter la fonction Sun_info () et combiner date_sunset () pour obtenir et sortir des informations détaillées sur le soleil.

Connaissances de base: date_sunset () et date_sun_info ()

Tout d'abord, nous introduisons brièvement les utilisations de deux fonctions clés:

  • DATE_SUNSET () : obtient le temps de coucher du soleil pour l'heure spécifiée et l'emplacement géographique.

  • DATE_SUN_INFO () : Renvoie un tableau contenant des informations détaillées telles que Sunrise, Sunset, Dusk, Dawn, Sun Noon, etc.

Bien que Date_sun_info () ait des fonctionnalités plus complètes, nous pouvons utiliser la configurabilité de date_sunset () (comme différents angles de zénith) pour obtenir des données plus granulaires.

Fonction personnalisée: Sun_info ()

Nous écrivons une fonction Sun_info () , qui prend la date, la longitude, la latitude et le fuseau horaire comme paramètres et renvoie un tableau structuré contenant les informations suivantes:

  • Temps de soleil

  • Temps de coucher

  • Longueur du soleil (unité: minutes)

  • Le soleil est midi

  • Temps du crépuscule

  • Temps de l'aube

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

    // Convertir en sortie formatée de fuseau horaire spécifié
    $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',
    ];
}

Exemple d'utilisation

Supposons que vous souhaitiez obtenir les informations Rizhao de Pékin le 26 avril 2025, vous pouvez l'appeler comme ceci:

 $info = sun_info('2025-04-26', 39.9042, 116.4074, 'Asia/Shanghai');

echo "Informations sur le soleil d&#39;aujourd&#39;hui de Pékin:<br>";
foreach ($info as $label => $value) {
    echo ucfirst(str_replace('_', ' ', $label)) . ': ' . $value . '<br>';
}

Un exemple de sortie peut être le suivant:

 Beijing Informations sur le soleil d&#39;aujourd&#39;hui:
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

Développer l'application: affichage frontal et intégration des liens

Afin d'afficher plus intuitivement ces informations de soleil, vous pouvez embellir davantage l'effet de sortie en combinant la bibliothèque JavaScript ou graphique. Vous pouvez également intégrer un lien sur la page, par exemple:

 echo '<a href="https://m66.net/sun?lat=39.9&lon=116.4&date=2025-04-26">Voir plus de détails Rizhao</a>';