PHPでは、 date_sunset()は、特定の日付と地理的位置の日没時間を取得するために使用される関数であり、 date_diff()は2つの日付と時間の間の時間間隔を計算できます。これらの2つの機能を組み合わせることで、「今日の日没の前にどれくらいの時間がかかるか」を簡単に描画できます。
以下に簡単な例を使用して、この関数を実装する方法を示します。
<?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()は緯度と経度のパラメーターを提供する必要があり、異なる領域の値は計算結果に影響します。
関数の日付( "z") / 3600は、現在のサーバーのタイムゾーンオフセットを動的に取得して、正確な結果を確保するために使用されます。
date_diff() date intervalオブジェクトを返します。ここで、 HとIのプロパティは時間と分の部品を表します。