PHPでは、 date_sunset()関数を使用して、指定された場所で日没時間を取得できます。この関数を使用することにより、複数の都市のサンセットタイムを簡単に比較し、それらを順番に提示することができます。この記事では、PHPを通じてさまざまな都市で日没時間を取得し、朝から夜まで順番にこれらの時間を手配する方法について説明します。
date_sunset()は、日没時間を取得するためのPHPビルトイン機能です。その基本的な構文は次のとおりです。
date_sunset(time, format, latitude, longitude, zenith, gmt_offset);
時間:現在の時間のUNIXタイムスタンプ。通常、 time()関数を使用して取得します。
形式: Sunfuncs_ret_timestamp (Returns Timestamp)、 Sunfuncs_ret_string (returns string format)、またはsunfuncs_ret_double (フローティング時間数を返す)などの時間の形式を返します。
緯度:標的都市の緯度。
経度:ターゲット都市の経度。
ゼニス:日没の標準高さ、一般的に90.5度(つまり、太陽が地平線に接触するとき)。
gmt_offset :タイムゾーンのオフセット、通常0または他のタイムゾーン。
各都市の緯度と経度を定義し、 date_sunset()関数を使用して日没時間を取得できます。次の都市の夕日を取得したいとします:北京、ニューヨーク、ロンドン。
これが日没時間を取得するためのサンプルコードです:
<?php
// 各都市の緯度と経度を定義します
$cities = [
"Beijing" => ['latitude' => 39.9042, 'longitude' => 116.4074],
"New York" => ['latitude' => 40.7128, 'longitude' => -74.0060],
"London" => ['latitude' => 51.5074, 'longitude' => -0.1278]
];
// 現在のタイムスタンプ
$current_time = time();
// 各都市の夕日を保管してください
$sunset_times = [];
foreach ($cities as $city => $coords) {
// 各都市の日没時間を取得します,タイムスタンプとしてフォーマット
$sunset_timestamp = date_sunset($current_time, SUNFUNCS_RET_TIMESTAMP, $coords['latitude'], $coords['longitude']);
// 都市と日没の時間を配列に保管してください
$sunset_times[$city] = $sunset_timestamp;
}
// 夕日を並べ替えます
asort($sunset_times);
// 出力ソートされた結果
echo "各都市の夕日(順番に):\n";
foreach ($sunset_times as $city => $sunset) {
echo $city . " 夕日はです: " . date("Y-m-d H:i:s", $sunset) . "\n";
}
?>
都市と緯度と経度の定義:都市の緯度と経度情報を含む各都市の配列を指定します。
現在の時刻を取得する: Time()で現在のUnixタイムスタンプを取得して、日没時間を計算します。
ループして日没時間を取得する: date_sunset()関数を使用して、各都市の日没時間を計算します。ここでは、 sunfuncs_ret_timestamp形式がここで使用され、その後の並べ替えを容易にするためにタイムスタンプを返すことに注意してください。
サンセットタイム: ASORT()関数を介して日没時間ごとに昇順で配列を並べ替えます。
出力の結果:最後に、タイムスタンプは日付()関数を通じて読み取り可能な日付時間形式に変換され、各都市の日没時間は順番に出力されます。
現在の時刻が2025-04-26であると仮定すると、上記のコードを実行した後、出力の結果は次のようになります。
各都市の夕日(順番に):
New York 夕日はです: 2025-04-26 19:52:00
London 夕日はです: 2025-04-26 20:12:00
Beijing 夕日はです: 2025-04-26 18:45:00
Date_Sunset()によって返される時間はUTCベースであり、結果が表示されたときに現地時間に変換されるようにします。
複数のタイムゾーンの表示をサポートする必要がある場合は、 date_default_timezone_set()関数を介してタイムゾーンを設定できます。
緯度と経度と時間ゾーンの精度は、結果の精度に影響するため、正確な都市座標を使用してください。