現在の位置: ホーム> 最新記事一覧> ループを使用して、一年中すべての日没時間を通過し、チャートを生成します

ループを使用して、一年中すべての日没時間を通過し、チャートを生成します

M66 2025-05-31

この記事では、PHPのdate_sunset関数を使用して毎日の日没時間を計算し、最終的に視覚的なディスプレイ用のグラフを生成する方法を学びます。プロセス全体には、データ収集とチャート図面の2つの部分が含まれています。

1。date_sunset関数の紹介

PHPの組み込みDate_sunset関数は、指定された日付、地理的位置(緯度と経度)、および高度に基づいて日没の時間を返すことができます。関数の基本的な構文は次のとおりです。

 date_sunset(
    int $timestamp,
    int $returnFormat = SUNFUNCS_RET_STRING,
    ?float $latitude = null,
    ?float $longitude = null,
    ?float $zenith = null,
    ?float $utcOffset = null
): string|int|float|false

一般的なパラメーター説明:

  • $タイムスタンプ:日付のUNIXタイムスタンプ。

  • $ returnFormat :文字列、タイムスタンプなどの返された形式。

  • $ latitude$ rocedity :地理的座標。

  • $ utcoffset :タイムゾーンオフセット(たとえば、中国は8.0です)。

2。一年中通過して、夕日の時間を集めます

次のPHPコードは、毎日のユニットで1年を通過し、毎日の日没時間を取得し、配列に保存します。

 <?php
$latitude = 39.9042;  // 例:北京の緯度
$longitude = 116.4074; // 例:北京の経度
$timezoneOffset = 8.0; // 北京時間

$start = strtotime('2025-01-01');
$end = strtotime('2025-12-31');

$sunsetTimes = [];

for ($day = $start; $day <= $end; $day = strtotime('+1 day', $day)) {
    $sunset = date_sunset($day, SUNFUNCS_RET_STRING, $latitude, $longitude, 90.833333, $timezoneOffset);
    $formattedDate = date('Y-m-d', $day);
    $sunsetTimes[] = [
        'date' => $formattedDate,
        'sunset' => $sunset
    ];
}

// に保存しますJSON書類,便利なフロントエンド図面
file_put_contents('sunset_data.json', json_encode($sunsetTimes, JSON_PRETTY_PRINT));
?>

このコードが実行された後、 Sunset_data.jsonファイルが生成されます。これは1日のサンセットタイムです。

3.チャートを使用して、日没時間を表示します

Chart.jsなどの単純なフロントエンドライブラリを使用して、チャートを描画できます。これがサンプルHTMLファイルです。

 <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>2025年の日没時間チャート</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <canvas id="sunsetChart" width="1000" height="500"></canvas>

    <script>
        fetch('https://m66.net/sunset_data.json')
            .then(response => response.json())
            .then(data => {
                const labels = data.map(item => item.date);
                const sunsetTimes = data.map(item => {
                    const parts = item.sunset.split(':');
                    return parseInt(parts[0]) + parseInt(parts[1]) / 60;
                });

                const ctx = document.getElementById('sunsetChart').getContext('2d');
                new Chart(ctx, {
                    type: 'line',
                    data: {
                        labels: labels,
                        datasets: [{
                            label: '日没の時間(時間)',
                            data: sunsetTimes,
                            borderColor: 'orange',
                            backgroundColor: 'rgba(255,165,0,0.3)',
                            fill: true,
                            tension: 0.3
                        }]
                    },
                    options: {
                        scales: {
                            y: {
                                title: {
                                    display: true,
                                    text: '時間(時間)'
                                }
                            },
                            x: {
                                title: {
                                    display: true,
                                    text: '日付'
                                },
                                ticks: {
                                    maxTicksLimit: 12
                                }
                            }
                        }
                    }
                });
            });
    </script>
</body>
</html>

上記のフェッチのデータURLは、要求されているようにhttps://m66.net/sunset_data.jsonに置き換えられていることに注意してください。

4。概要

上記の方法を通して、PHPを使用して1年間サンセットデータを収集し、フロントエンドテクノロジーを通じて変更チャートを作成しました。これにより、年間の日没の時間の変化する傾向を直感的に見ることができます。これは、気象アプリケーション、天文学的な観察リマインダー、その他の機能に非常に適しています。

このシステムをより完璧にしたい場合は、キャッシュ戦略を追加し、さまざまな都市間の切り替えをサポートして、ユーザーエクスペリエンスをさらに向上させることもできます。