이 기사에서는 PHP의 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 ).
다음 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 파일이 생성됩니다. 이는 일몰 시간입니다.
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 으로 대체되었습니다.
위의 방법을 통해 PHP를 사용하여 1 년 동안 일몰 데이터를 수집하고 프론트 엔드 기술을 통해 변경 차트를 작성했습니다. 이를 통해 해당 일몰 시간의 변화하는 추세를 직관적으로 볼 수 있으며, 이는 날씨 적용, 천문 관찰 알림 및 기타 기능에 매우 적합합니다.
이 시스템을보다 완벽하게 만들려면 캐싱 전략을 추가하고 다른 도시 간의 전환을 지원하여 사용자 경험을 더욱 향상시킬 수 있습니다.