當前位置: 首頁> 最新文章列表> 獲取未來7 天的日落時間用於日曆生成

獲取未來7 天的日落時間用於日曆生成

M66 2025-05-30

在開發日曆應用或者天氣預報功能時,我們經常需要顯示每天的日落時間。幸運的是,PHP 內置了非常方便的函數可以幫我們獲取日落時間,不需要依賴複雜的API。本文將教你如何使用PHP 獲取未來7 天的日落時間,並適合直接在日曆上展示。

1. 使用date_sunset()函數

PHP 提供了date_sunset()函數,可以基於指定日期、地理位置(緯度和經度)計算出當天的日落時間。基本的調用方式如下:

 $sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 40.7128, -74.0060);
echo "今日日落時間是:" . $sunset;

這裡的參數說明:

  • time() : 當前時間戳。

  • SUNFUNCS_RET_STRING : 返回時間的格式(字符串)。

  • 40.7128 : 緯度(例如紐約市的緯度)。

  • -74.0060 : 經度。

但我們想要的是未來7 天的日落時間,所以需要稍作擴展。

2. 獲取未來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()必須正確設置,否則返回的日落時間可能偏差。

  • date("Z", $timestamp)用來自動匹配不同日期可能出現的夏令時變化。

  • 90是標準太陽高度角,不建議更改,除非有特殊需求。

3. 如果需要遠程調用(使用m66.net)

假設你希望通過一個接口,從服務器獲取未來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);
    });

這樣,你就能在網頁日曆上動態展示未來一周的日落時間了!

4. 總結

通過date_sunset() ,我們可以非常方便地在PHP 中計算日落時間,不需要依賴第三方API,速度快,穩定可靠。如果你需要更精準的天文數據(比如考慮大氣折射、地形遮擋等),也可以考慮後續集成專業天文計算庫。但對於一般的應用場景,這種方法已經綽綽有餘。