カレンダーアプリケーションや天気予報機能を開発する場合、毎日日没の時間を表示する必要があります。幸いなことに、PHPには非常に便利な機能が組み込まれており、複雑なAPIに依存せずに日没時間を取得するのに役立ちます。この記事では、PHPを使用して次の7日間の日没時間を取得する方法を教えてくれます。カレンダーに直接表示するのに適しています。
PHPは、指定された日付、地理的位置(緯度と経度)に基づいて1日の日没時間を計算できます。基本的な呼び出し方法は次のとおりです。
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 40.7128, -74.0060);
echo "今日の夕日はです:" . $sunset;
パラメーターの説明はこちら:
time() :現在のタイムスタンプ。
sunfuncs_ret_string :時間の形式(string)を返します。
40.7128 :緯度(ニューヨーク市の緯度など)。
-74.0060 :経度。
しかし、私たちが望んでいるのは、次の7日間の日没の時間ですので、少し拡大する必要があります。
以下の完全なサンプルコードは、来週のサンセットタイムのリストをループする方法を示しています。
<?php
date_default_timezone_set('America/New_York'); // 必要に応じて正しいタイムゾーンを設定します
// 地理的位置を設定します(たとえば、ニューヨーク)
$latitude = 40.7128;
$longitude = -74.0060;
$sunset_times = [];
for ($i = 0; $i < 7; $i++) {
$timestamp = strtotime("+$i day");
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90, // 太陽は地平線の下にあります(標準値 90)
date("Z", $timestamp)
);
$sunset_times[] = [
'date' => date('Y-m-d', $timestamp),
'sunset' => $sunset
];
}
// 出力結果
foreach ($sunset_times as $day) {
echo "日付:" . $day['date'] . ",日没の時間:" . $day['sunset'] . "<br>";
}
?>
date_default_timezone_set()は正しく設定する必要があります。そうしないと、返された日没時間が逸脱する場合があります。
日付( "z"、$タイムスタンプ)は、異なる日付で発生する可能性のある夏時間の変更を自動的に一致させるために使用されます。
90は標準的な太陽高度角であり、特別なニーズがない限り、変更することをお勧めしません。
サーバーから次の7日間のサンセットタイムデータを取得したい場合は、フロントエンドを使用するインターフェイスを介して、次のような単純なAPIを記述できます。
<?php
header('Content-Type: application/json');
date_default_timezone_set('America/New_York');
$latitude = 40.7128;
$longitude = -74.0060;
$sunset_times = [];
for ($i = 0; $i < 7; $i++) {
$timestamp = strtotime("+$i day");
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90,
date("Z", $timestamp)
);
$sunset_times[] = [
'date' => date('Y-m-d', $timestamp),
'sunset' => $sunset
];
}
echo json_encode($sunset_times);
?>
フロントエンドは、インターフェイスにアクセスできます。たとえば、次のようになります。
fetch('https://m66.net/api/sunset_times.php')
.then(response => response.json())
.then(data => {
console.log(data);
});
このようにして、来週の日没時間をWebカレンダーに動的に表示できます!
date_sunset()を使用すると、サードパーティのAPIに依存することなく、PHPで非常に便利にサンセット時間を計算できます。より正確な天文データ(大気屈折、地形の閉塞などを考慮するなど)が必要な場合は、将来的には専門の天文コンピューティングライブラリの統合を検討することもできます。ただし、一般的なアプリケーションシナリオの場合、この方法は十分です。