【PHP】月齢計算用ライブラリ

ふと欲しくなったので、月齢を計算するライブラリを作成してみました。



Download

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

Overview

天文学的な近似法を用いて任意の日時における月齢を計算します。

$m = new MoonAgeTime();
$m->setTargetTime(mktime(12, 0, 0, 10, 27, 1999));
$moonAge = $m->getMoonAge();

  • 返り値はfloatです。
  • 便宜上、円周率は0.017453278(ラジアン)に、地球の自転遅れは0.00074074074(日)に近似されています。
  • 基本的に日本国内での使用を前提としています。
  • 近似計算を一部省略しているため、若干実体とは離れます。



Sample

試しにこんな画像を用意してみました。


適当な処理を行うと、現在の月の状況をアイコンで表すことが出来ます。

setTargetTime(time());
echo date(‘Y-m-d H:i:s’) . ‘現在の月 … ‘ . ‘getMoonAge() / 30 * 24)) . ‘.gif” />’;
?>

setTargetTime(time());
echo date('Y-m-d H:i:s') . '現在の月 ... ' . 'getMoonAge() / 30 * 24)) . '.gif" />';
?>



Install

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



Source




謝辞

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



Footnote

プログラム内にコメントとして日本語が混入しています。
また思いついてから2時間あまりで作成したため、テストは不十分です。月齢が30を越えるなど微妙な計算結果が返ることがあるかも知れません。