月齢計算、正確な式に修正

ある日を基準にして、日数の差を取り、周期で割るという単純だがこれ以上正確になりえない計算方法で行くことにした。つまり、

現在の月齢 = ((現在日時 - 基準日時) + 基準の月齢) % 周期

で行けるのではないかという結論に達した。

  • ソース(基準日:2010/7/1 月齢:18.7)
Date date = new GregorianCalendar().getTime();
Date date0 = new GregorianCalendar(2010, 7-1, 1).getTime();
double phase = (((date.getTime() - date0.getTime()) / (3600 * 24 * 1000)) + 18.7) % 29.530589;