在PHP 中, date_sunset()是一個用於獲取特定日期和地理位置的日落時間的函數,而date_diff()可以計算兩個日期時間之間的時間間隔。結合這兩個函數,我們可以很方便地得出“現在離今天日落還有多久”。
下面我們通過一個簡單的示例來演示如何實現這個功能。
<?php
// 設置時區
date_default_timezone_set('Asia/Shanghai');
// 獲取當前時間
$currentTime = new DateTime();
// 設置日期和地理位置(以北京時間和北京位置為例)
$timestamp = time();
$latitude = 39.9042; // 北京緯度
$longitude = 116.4074; // 北京經度
// 獲取今天日落時間(返回的是時間戳)
$sunsetTimestamp = date_sunset(
$timestamp,
SUNFUNCS_RET_TIMESTAMP,
$latitude,
$longitude,
90, // 海拔角度,一般設為90表示標準日落
date("Z") / 3600 // 當前時區的小時數
);
// 將日落時間轉換為 DateTime 對象
$sunsetTime = new DateTime();
$sunsetTime->setTimestamp($sunsetTimestamp);
// 計算當前時間與日落時間的差距
$interval = date_diff($currentTime, $sunsetTime);
// 判斷是還有時間還是已經日落
if ($sunsetTime > $currentTime) {
echo "距離日落還有 " . $interval->h . " 小時 " . $interval->i . " 分鐘。";
} else {
echo "日落已經過去了 " . $interval->h . " 小時 " . $interval->i . " 分鐘。";
}
?>
距離日落還有 2 小時 34 分鐘。
或者如果已經日落:
日落已經過去了 1 小時 12 分鐘。
date_sunset()需要提供經緯度參數,不同地區的值會影響計算結果;
函數中的date("Z") / 3600用於動態獲取當前服務器的時區偏移,確保結果準確;
date_diff()返回的是DateInterval對象,其中的h和i屬性代表小時和分鐘部分。