PHPプログラミング

レシピ

日付・時刻

日の出/日の入りの時間を取得する

date_sunrise関数date_sunset関数を使い、指定した日付と場所の日の出時刻&日の入り時刻を取得する方法について解説します。

この記事のポイント

  • 日の出、日の入り時刻を調べたい年月日をタイムスタンプ形式で用意する
  • 場所の緯度&経度のジオコードをGoogle Mapで確認する

目次

日の出の時刻を取得する

date_sunrise関数に日付と場所(緯度&経度)を渡すと、その地域の一定の時期の日の出時刻を取得することができます。

コード例

date_sunrise( time(), SUNFUNCS_RET_STRING, $latitude, $longitude);

指定するパラメータがやや多く、第1パラメータは日付のタイムスタンプ、第2パラメータはレスポンスの形式、第3と第4パラメータは緯度(Latitude)と経度(Longitude)です。

上記のコード例では第1パラメータにtime関数で取得したタイムスタンプをそのまま渡していますが、この場合は関数が実行された時点の日の出時刻を取得することができます。
もし夏至など特定の日付における日の出時刻を取得したい場合は、次のようにあらかじめタイムスタンプを生成してから関数に渡します。

コード例

// 緯度
$latitude = 35.693474;

// 経度
$longitude = 139.749889;

// 夏至の日付からタイムスタンプを取得
$date = strtotime('2019-06-21');

echo '日の出時刻:'.date_sunrise( $date, SUNFUNCS_RET_STRING, $latitude, $longitude);

出力結果

日の出時刻:04:25

第2パラメータの定数は、次の3つから選ぶことができます。

定数形式返り値の例
SUNFUNCS_RET_STRING時刻を文字列(string)で返す04:25
SUNFUNCS_RET_DOUBLE時刻を浮動小数点数(float型)で返す4.4215103873189
SUNFUNCS_RET_TIMESTAMP時刻をタイムスタンプ(int型)で返す1561058717

緯度と経度はジオコードを浮動小数点数(float型)で渡します。
特定の場所のジオコードを取得したい場合は、Google Mapで住所を入力して調べると手軽で便利です。
例えば、日本武道館の緯度&経度を確認するには次の箇所に記載があります。

GoogleMapで緯度、経度の表示例

この緯度と経度をそれぞれdate_sunrise関数に指定します。

日の入り時刻を取得

日の出時刻と反対に、日の入り時刻を取得したい場合はdate_sunset関数を使います。

コード例

date_sunset( time(), SUNFUNCS_RET_STRING, $latitude, $longitude);

指定するパラメータや返り値の形式はdate_sunrise関数と全く同じです。

コード例

// 緯度
$latitude = 35.693474;

// 経度
$longitude = 139.749889;

// 夏至の日付からタイムスタンプを取得
$date = strtotime('2019-06-21');

echo '日の入り時刻:'.date_sunset( $date, SUNFUNCS_RET_STRING, $latitude, $longitude);

出力結果

日の入り時刻:19:00

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。