関数の概要
date_sun_info 関数は、指定した日時と緯度・経度に基づいて、その日の太陽の情報(日の出、日の入り、日の入り直前・直後の光の状態など)を取得できるPHPの組み込み関数です。天体の動きを計算して返すため、例えば天気予報アプリやアウトドア系のウェブサイトで活用できます。
パラメータの説明
timestamp: int
調べたい日時のUNIXタイムスタンプを指定します。latitude: float
地点の緯度を度単位で指定します。北緯は正の値、南緯は負の値。longitude: float
地点の経度を度単位で指定します。東経は正の値、西経は負の値。zenith: int, オプション
太陽の高度基準角度を指定します。デフォルトはdate_sunzenith(90度50分)で、一般的な日の出・日の入りの計算に使われます。gmt_offset: float, オプション
指定した日時のGMTからの時差(時間単位)を指定します。指定しない場合はサーバーのタイムゾーン設定が利用されます。
戻り値
連想配列を返します。配列のキーと意味は以下の通りです。
sunrise: 日の出のUNIXタイムスタンプsunset: 日の入りのUNIXタイムスタンプtransit: 太陽が天頂を通過する時刻のUNIXタイムスタンプ(正午前後)civil_twilight_begin: 市民薄明(日の出前の明るさが始まる時刻)civil_twilight_end: 市民薄明(日の入り後の明るさが終わる時刻)nautical_twilight_begin: 航海薄明開始(より暗い薄明の始まり)nautical_twilight_end: 航海薄明終了astronomical_twilight_begin: 天文薄明開始(日が沈み、かなり暗くなる境目)astronomical_twilight_end: 天文薄明終了
各値は失敗した場合は false が返されることがあります。
使用例
基本的な使い方:日の出・日の入り時刻を取得する
<?php
$timestamp = time();
$latitude = 35.6895; // 東京の緯度
$longitude = 139.6917; // 東京の経度
$sun_info = date_sun_info($timestamp, $latitude, $longitude);
echo '日の出: ' . date('H:i:s', $sun_info['sunrise']) . "<br>";
echo '日の入り: ' . date('H:i:s', $sun_info['sunset']) . "<br>";
?>
現在日時の東京の日の出・日の入り時刻を表示します。
特定の日付で日の出・日の入りを取得する
<?php
$date = '2024-07-01';
$timestamp = strtotime($date);
$latitude = 34.6937; // 大阪の緯度
$longitude = 135.5023; // 大阪の経度
$sun_info = date_sun_info($timestamp, $latitude, $longitude);
echo $date . ' の大阪の日の出は ' . date('H:i:s', $sun_info['sunrise']) . "<br>";
echo $date . ' の大阪の日の入りは ' . date('H:i:s', $sun_info['sunset']) . "<br>";
?>
指定した日付で大阪の太陽情報を取得し、日の出・日の入り時刻を表示します。
標準時の補正を使った例(タイムゾーンがGMT+9の地域)
<?php
$timestamp = time();
$latitude = 51.5074; // ロンドンの緯度
$longitude = -0.1278; // ロンドンの経度
$gmt_offset = 0; // ロンドンはUTC+0(サマータイム考慮なし)
$sun_info = date_sun_info($timestamp, $latitude, $longitude, SUNFUNCS_RET_TIMESTAMP, $gmt_offset);
echo 'ロンドンの日の出: ' . date('H:i:s', $sun_info['sunrise']) . "<br>";
echo 'ロンドンの日の入り: ' . date('H:i:s', $sun_info['sunset']) . "<br>";
?>
ロンドンの標準時(GMT)を明示的に設定して日の出・日の入り時刻を取得する例です。
関連する関数
date_sunrise: 指定地点の「日の出時刻」を取得date_sunset: 指定地点の「日の入り時刻」を取得date_default_timezone_set: PHPのタイムゾーン設定strtotime: 日付の文字列をUNIXタイムスタンプに変換
まとめ
date_sun_info 関数は、PHPで簡単に任意の地点と日時における太陽の動きを取得できる便利なツールです。日の出や日の入り時刻だけでなく、市民薄明や天文薄明の開始・終了時刻もわかるため、アウトドアや天文など幅広い用途に使えます。緯度・経度と日時を正しく指定し、戻り値の配列から必要な情報を取得することで、自然現象をプログラムで扱うことができます。
