Codeのリニューアルに合わせて、日の出・日の入り計算用ライブラリを書き直し、「Suntime.php」として改めてリリースしました。PEARとかに上げれたら良かったんですが、コードの内容はもとより形式などかなり不安だったのでとりあえずGist@GitHubにあげてあります。



Download

http://gist.github.com/gists/225915/download

Overview

天文学的な近似法を用いて任意の緯度/経度における任意の日の「日の出」「日の入り」の時刻を計算します。オプションを用いることで、「薄明」(理科年表で定義される「夜明け」「日暮れ」)を求めることも出来ます。

<?php
require_once './Suntime.php';
$s = new Suntime('経度', '緯度', time());
echo date('Y-m-d H:i:s', $s->getSunRise());   //日の出
echo date('Y-m-d H:i:s', $s->getSunSet());    //日の入り

echo date('Y-m-d H:i:s', $s->getSunRise(1));   //日の出薄明(夜明け)
echo date('Y-m-d H:i:s', $s->getSunSet(1));    //日の入り薄明(日暮れ)
?>

  • 返り値は全てUNIXタイムスタンプです。
  • 経度、緯度のデフォルトは京都(それぞれ135.7717、35.008)です。
  • 便宜上、円周率は0.017453278(ラジアン)に、地球の自転遅れは0.00074074074(日)に近似されています。



Install

依存するライブラリはありません。任意のディレクトリで使用できます。

PHP4でも動く気がしますが、気がするだけですので動かなかったらすみません。



Source




謝辞

コード内の近似計算においては、長沢工著「日の出・日の入りの計算」を参考にさせていただきました。感謝します。





Footnote

プログラム内のコメントに日本語が混入しています。
全てのコメントを英語表記にしたかったのですが、なにぶん専門用語が多く全て英訳できませんでした。プログラム動作に影響はないと思いますが、一応。