(PHP 5 >= 5.1.2, PHP 7, PHP 8)
date_sun_info — 日の出/日の入り時刻と薄明かり (twilight) の開始/終了時刻の情報を含む配列を返す
$timestamp, float $latitude, float $longitude): array
timestampUnixタイムスタンプ。
latitude緯度を表す度数。
longitude経度を表す度数。
成功した場合に配列、失敗した場合に false を返します。
配列の構造の詳細は、以下のリストのとおりです
sunrisesunsettransitcivil_twilight_beginsunrise の時刻に終了します。
civil_twilight_endsunset の時刻に始まります。
nautical_twilight_begincivil_twilight_begin に終了します。
nautical_twilight_endcivil_twilight_end の時刻に始まります。
astronomical_twilight_beginnautical_twilight_begin に終了します。
astronomical_twilight_endnautical_twilight_end の時刻に始まります。
配列の要素の値は、UNIXタイムスタンプ、または
太陽が天頂より一日中下にある場合、false です。
また、一日中天頂より上にある場合、 true です。
| バージョン | 説明 |
|---|---|
| 7.2.0 | ローカルの昼ではなく、 夜中に関する計算結果が修正されました。 これによって、結果が少し変わります。 |
例1 date_sun_info() の例
<?php
$sun_info = date_sun_info(strtotime("2006-12-12"), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
echo "$key: " . date("H:i:s", $val) . "\n";
}
?>
上の例の出力は以下となります。
sunrise: 05:52:11 sunset: 15:41:21 transit: 10:46:46 civil_twilight_begin: 05:24:08 civil_twilight_end: 16:09:24 nautical_twilight_begin: 04:52:25 nautical_twilight_end: 16:41:06 astronomical_twilight_begin: 04:21:32 astronomical_twilight_end: 17:12:00
例2 極夜の例
<?php
var_dump(date_sun_info(strtotime("2017-12-21"), 90, 0));
?>
上の例の出力は以下となります。
array(9) {
["sunrise"]=>
bool(false)
["sunset"]=>
bool(false)
["transit"]=>
int(1513857490)
["civil_twilight_begin"]=>
bool(false)
["civil_twilight_end"]=>
bool(false)
["nautical_twilight_begin"]=>
bool(false)
["nautical_twilight_end"]=>
bool(false)
["astronomical_twilight_begin"]=>
bool(false)
["astronomical_twilight_end"]=>
bool(false)
}
例3 Midnight sun
<?php
var_dump(date_sun_info(strtotime("2017-06-21"), 90, 0));
?>
上の例の出力は以下となります。
array(9) {
["sunrise"]=>
bool(true)
["sunset"]=>
bool(true)
["transit"]=>
int(1498046510)
["civil_twilight_begin"]=>
bool(true)
["civil_twilight_end"]=>
bool(true)
["nautical_twilight_begin"]=>
bool(true)
["nautical_twilight_end"]=>
bool(true)
["astronomical_twilight_begin"]=>
bool(true)
["astronomical_twilight_end"]=>
bool(true)
}