현재 위치: > 최신 기사 목록> 루프를 사용하여 연중 모든 일몰 시간을 가로 지르고 차트를 생성하십시오.

루프를 사용하여 연중 모든 일몰 시간을 가로 지르고 차트를 생성하십시오.

M66 2025-05-31

이 기사에서는 PHP의 date_sunset 함수를 사용하여 매일 일몰 시간을 계산하고 마지막으로 시각적 디스플레이를위한 그래프를 생성하는 방법을 배웁니다. 전체 프로세스에는 데이터 수집 및 차트 도면의 두 부분이 포함됩니다.

1. date_sunset 함수 소개

PHP의 내장 날짜 _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

공통 매개 변수 설명 :

  • $ timestamp : 날짜의 Unix 타임 스탬프.

  • $ returnformat : 문자열, 타임 스탬프 등과 같은 반환 형식 등

  • $ 위도$ 경도 : 지리적 좌표.

  • $ UTCOFFSET : 시간대 오프셋 (예 : 중국은 8.0 ).

2. 일년 내내 가서 일몰 시간을 모으십시오.

다음 PHP 코드는 일년 내내 매일 단위로 가로 지르고 매일 일몰 시간을 얻고 배열에 보관합니다.

 <?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 파일이 생성됩니다. 이는 일몰 시간입니다.

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>

위의 Fetch 의 데이터 URL은 요청대로 https://m66.net/sunset_data.json 으로 대체되었습니다.

4. 요약

위의 방법을 통해 PHP를 사용하여 1 년 동안 일몰 데이터를 수집하고 프론트 엔드 기술을 통해 변경 차트를 작성했습니다. 이를 통해 해당 일몰 시간의 변화하는 추세를 직관적으로 볼 수 있으며, 이는 날씨 적용, 천문 관찰 알림 및 기타 기능에 매우 적합합니다.

이 시스템을보다 완벽하게 만들려면 캐싱 전략을 추가하고 다른 도시 간의 전환을 지원하여 사용자 경험을 더욱 향상시킬 수 있습니다.