関数の概要
PHPの date_sunrise 関数は、指定した日時と地点の緯度・経度から、その日の「日の出」の時刻を取得するための関数です。気象や天文アプリケーション、位置情報を活用したサービスでよく使われます。日付と場所の条件によって計算されるため、動的に日出時刻を取得したい場合に便利です。
パラメータの説明
timestamp(int): 日時を表すUnixタイムスタンプ(秒単位)。日の出時刻を求めたい日付を指定します。returnFormat(int, オプション): 返却形式を指定します。SUNFUNCS_RET_STRING(デフォルト): 時刻を「HH:MM」で文字列として返します。SUNFUNCS_RET_DOUBLE: 時刻を0~24の少数で返します(例: 6.5 = 6時30分)。SUNFUNCS_RET_TIMESTAMP: Unixタイムスタンプとして返します。
latitude(float, オプション): 緯度(-90.0~90.0)。指定しない場合はデフォルト値0になります。longitude(float, オプション): 経度(-180.0~180.0)。指定しない場合はデフォルト値0になります。zenith(float, オプション): 太陽の天頂角(角度)。標準は90度50分(90.8333)で、これは一般的な日の出の定義です。gmtOffset(float, オプション): GMTからの時差(時間単位)。指定しない場合は0となります。
戻り値
指定した返却形式に応じて、日の出時刻を次のいずれかで返します:
- 「HH:MM」の形式での文字列(日の出の時刻)
- 0~24の数値(時間の少数表現)
- Unixタイムスタンプ(秒単位の日時)
条件によっては、計算できない場合に false を返します。
使用例
基本的な使い方
<?php
// 2024年6月1日の東京(緯度35.6895、経度139.6917)の日の出時刻を取得(日本標準時 UTC+9)
$timestamp = mktime(0, 0, 0, 6, 1, 2024);
$sunrise = date_sunrise($timestamp, SUNFUNCS_RET_STRING, 35.6895, 139.6917, 90.8333, 9);
echo "日の出時刻: " . $sunrise; // 例: "日の出時刻: 04:25"
?>
この例では「2024年6月1日・東京」の日の出時刻を文字列で取得し、表示しています。gmtOffsetには東京の標準時(+9時間)を指定しています。
Unixタイムスタンプで取得する例
<?php
$timestamp = strtotime("2024-12-25");
$sunrise_timestamp = date_sunrise($timestamp, SUNFUNCS_RET_TIMESTAMP, 40.7128, -74.0060, 90.8333, -5);
echo "NYの2024年12月25日の日の出: " . date("Y-m-d H:i:s", $sunrise_timestamp);
?>
こちらはニューヨークの2024年12月25日の日の出時刻をUnixタイムスタンプで取得し、標準的な日時形式に変換して表示しています。タイムゾーンは東部標準時(UTC-5)です。
少数形式で取得する例
<?php
$timestamp = time();
$sunrise_hour = date_sunrise($timestamp, SUNFUNCS_RET_DOUBLE, 51.5074, -0.1278, 90.8333, 0);
echo "ロンドンの今日の日の出時刻(時間少数): " . $sunrise_hour;
?>
この例はロンドンの現在の日の出を0~24の時間の少数で取得しています。例えば「5.75」は5時45分を表します(0.75×60分)。返り値を活かして数値計算も可能です。
関連する関数
date_sunset– 指定日時・場所の日没時刻を取得します。date_sun_info– 指定日時・場所の太陽に関する複数情報(日の出・日没・日の入り・夜明けなど)を一括取得します。mktime– 日時をUnixタイムスタンプに変換します(timestamp生成に便利)。
まとめ
date_sunrise は、位置情報と日時を元に正確な日の出時刻を取得できる便利なPHP関数です。出力形式も選べるため、用途に応じて文字列やタイムスタンプ、数値で扱えます。気象情報の表示や時間計算が必要なWebアプリケーションの開発に役立つので、ぜひ使い方をマスターしてください。
