PHPでは、 date_sunrise()とdate_sunset()は、指定された日付と地理的座標に基づいて、日の出と日没時刻を計算できる2つの非常に実用的な関数です。これら2つの関数を組み合わせることにより、日の合計期間を非常に簡単に計算できます。
これは、自動ライトスイッチング、スマートファーム、屋外アクティビティ管理、その他のシステムなど、日の長さに応じてビジネスロジックの調整を必要とするアプリケーションシナリオにとって非常に価値があります。
date_sunrise(int $timestamp, int $format = SUNFUNCS_RET_STRING, float $latitude = ini_get("date.default_latitude"), float $longitude = ini_get("date.default_longitude"), float $zenith = ini_get("date.sunrise_zenith"), float $gmt_offset = 0): string|int|float|false
date_sunset(int $timestamp, int $format = SUNFUNCS_RET_STRING, float $latitude = ini_get("date.default_latitude"), float $longitude = ini_get("date.default_longitude"), float $zenith = ini_get("date.sunset_zenith"), float $gmt_offset = 0): string|int|float|false
具体的な例を使用して、昼間を計算する方法を説明しましょう。
日付:現在の日付
座標:北京市(緯度39.9042、経度116.4074)
タイムゾーン:東第8地区(UTC+8)
<?php
date_default_timezone_set('Asia/Shanghai');
$timestamp = time();
$latitude = 39.9042;
$longitude = 116.4074;
$gmt_offset = 8;
// 日の出と日没の時間を手に入れましょう(による UNIX タイムスタンプ形式で戻ります)
$sunrise = date_sunrise($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, 90, $gmt_offset);
$sunset = date_sunset($timestamp, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, 90, $gmt_offset);
if ($sunrise !== false && $sunset !== false) {
$dayLength = $sunset - $sunrise;
// 時間と分形式に変換します
$hours = floor($dayLength / 3600);
$minutes = floor(($dayLength % 3600) / 60);
echo "日の出の時間: " . date("H:i:s", $sunrise) . PHP_EOL;
echo "日没の時間: " . date("H:i:s", $sunset) . PHP_EOL;
echo "昼間: {$hours}時間{$minutes}分" . PHP_EOL;
} else {
echo "无法计算日出或日没の時間。座標または日付設定を確認してください。";
}
date_sunrise()およびdate_sunset()で使用されるゼニス角は、デフォルトで90度です。これは、日の出と日没の時間が、地平線がちょうど上昇または倒れた位置から計算されることを意味します。必要に応じて調整できます。
タイムゾーンオフセット( $ gmt_offset )を正しく設定して、出力時間が現地時間に適合するようにする必要があります。
返された虚偽の場合、それは通常、異常な座標設定、極端な昼、または極端な夜などの特別な状況によるものです。
この計算方法は、次のような時間に敏感なシステムに簡単に埋め込むことができます。
自動照明システム(スマートホームコントローラーなど)
https://api.gitbox.net/astro/daylength?lat=39.9&lon=116.4などの天文APIインターフェイス
リアルタイムの昼間の変更を示すための屋外の天気ウィジェット
PHPが提供するこれらの太陽機能を使用して、外部サービスに依存することなく、太陽高度角に関連する時間データを正確に取得し、システムによりインテリジェントな判断ベースを提供できます。