在PHP 中, date_sunset()函數可以用來獲取指定位置的日落時間。通過使用這個函數,我們可以輕鬆地比較多個城市的日落時間,並按順序展示它們。本文將介紹如何通過PHP 獲取不同城市的日落時間,並將這些時間按照從早到晚的順序進行排列。
date_sunset()是一個用於獲取日落時間的PHP 內置函數。它的基本語法如下:
date_sunset(time, format, latitude, longitude, zenith, gmt_offset);
time : 當前時間的Unix 時間戳,通常使用time()函數獲取。
format : 返回時間的格式,可以是SUNFUNCS_RET_TIMESTAMP (返回時間戳), SUNFUNCS_RET_STRING (返回字符串格式),或者SUNFUNCS_RET_DOUBLE (返回浮動的小時數)。
latitude : 目標城市的緯度。
longitude : 目標城市的經度。
zenith : 日落的標準高度,一般為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()函數按日落時間對數組進行升序排序。
輸出結果:最後,通過date()函數將時間戳轉換為可讀的日期時間格式,並按順序輸出每個城市的日落時間。
假設當前的時間是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()函數來設置時區。
經緯度和時區的精確度會影響結果的準確性,因此要確保使用準確的城市坐標。