date_sun_info

(PHP 5 >= 5.1.2, PHP 7)

date_sun_info日の出/日の入り時刻と薄明かり (twilight) の開始/終了時刻の情報を含む配列を返す

説明

date_sun_info ( int $timestamp , float $latitude , float $longitude ) : array

パラメータ

timestamp

Unixタイムスタンプ。

latitude

緯度を表す度数。

longitude

経度を表す度数。

返り値

成功した場合に配列、失敗した場合に FALSE を返します。 配列の構造の詳細は、以下のリストのとおりです

sunrise
日の出のタイムスタンプ (天頂角 = 90°50' )
sunset
日の入りのタイムスタンプ (天頂角 = 90°35' )
transit
太陽が天頂に達するタイムスタンプ。 つまり、もっとも上部に達した時刻です。
civil_twilight_begin
夜明けの始まり(天頂角 = 96°) sunrise の時刻に終了します。
civil_twilight_end
夕暮れの終わり(天頂角 = 96°) sunset の時刻に始まります。
nautical_twilight_begin
航海上の夜明け (天頂角 = 102°) civil_twilight_begin に終了します。
nautical_twilight_end
航海上の夕暮れ (天頂角 = 102°) civil_twilight_end の時刻に始まります。
astronomical_twilight_begin
天文学上の夜明け (天頂角 = 108°) nautical_twilight_begin に終了します。
astronomical_twilight_end
天文学上の夕暮れ (天頂角 = 108°) nautical_twilight_end の時刻に始まります。

配列の要素の値は、UNIXタイムスタンプ、または 太陽が天頂より一日中下にある場合、FALSE です。 また、一日中天頂より上にある場合、 TRUE です。

例1 date_sun_info() の例

<?php
$sun_info 
date_sun_info(strtotime("2006-12-12"), 31.766735.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 Polar night

<?php
var_dump
(date_sun_info(strtotime("2017-12-21"), 900));
?>

上の例の出力は以下となります。

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"), 900));
?>

上の例の出力は以下となります。

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)
}

参考

  • date_sunrise() - 指定した日付と場所についての日の出時刻を返す
  • date_sunset() - 指定した日付と場所についての日の入り時刻を返す