こよみのぺーじ 日刊☆こよみのページ スクラップブック(PV , since 2008/7/8)
■旧暦の「三十一日」?
 新暦と旧暦という二つの暦の日付を相互に変換するプログラムがあります。
 Web こよみのページでは、「新暦と旧暦」というページにこうした変換プロ
 グラムが用意されています。URL は、 http://koyomi8.com/kyuureki.htm

 その中で古くからある「旧暦・新暦日付変換計算(1000-2069年)」というCGI
 プログラムは、変換計算を実行した回数を記録しているのですが、この回数
 が毎月およそ 3万件あることからすると、こうした暦の変換が必要な人の数
 は結構多いようです。

 例えばこのプログラムで、本日の旧暦の日付が知りたいという場合、計算の
 方向として「新暦→旧暦」を選び、本日の年月日を入力して計算を実行する
 と、

    (新暦)平成19年 2007年 9月 5日
   →(旧暦)平成19年 2007年 7月24日 水曜 赤口 壬寅 破

 と変換されます。本日は旧暦ではまだ 7月の終わりなのですね。


◇プログラムのバグ?
 ある時このプログラムの利用者から、「プログラムがおかしい」 という連
 絡を受けました。

   2007年 8月31日を変換しようとすると、
   「入力された年月日が異常。入力値要確認」
   と表示されて、計算出来ない。どうにかしてください。

 と言うのがその内容。そんなはずはと思い試してみると

    (新暦)平成19年 2007年 8月31日
   →(旧暦)平成19年 2007年 7月19日 金曜 先勝 丁酉 除

 ときちんと答えが出ます。何がおかしいのかとプログラムを何度も見直しま
 したがおかしなところが見つからずに悩んでしまいました。
 おかしいなと、問い合わせをしてきた方に詳しい状況をうかがうことに。
 条件を全く同じにして再現しようと言うわけです。

 メールだけでの連絡なので、条件を同じにするのに何度かのやり取りが必要
 でしたが、その「何度かのやり取り」の末に思わぬ原因が判りました。変換
 がうまく行かない計算は、

   旧暦の2007年 8月31日を新暦に変換したい

 と言うものだったのです。
 計算出来ないはずだ・・・。


◇変換出来ない日付
 もう気づいた方もいらっしゃると思います。もしこの計算が、

  A.新暦の2007年 8月31日を旧暦に変換したい

     であるとか、

  B.旧暦の2007年 8月30日を新暦に変換したい

 と言うのであれば何の問題も無かったのです。それが、「旧暦の 8月31日」
 であったため、素直なプログラムは「入力された年月日が異常」と表示して
 変換をあきらめたのでした。

 だって、太陰太陽暦である旧暦には「31日」という日付は存在しないのです
 から・・・。


◇「三十日」なら大丈夫?
 先に、

   B.旧暦の2007年 8月30日を新暦に変換したい

 だったら大丈夫と書きました。太陰暦にも30日はありますからね。
 でもここにもやはり落とし穴が。上の例は変換可能ですが、次の例は同じ月
 日でも変換が出来ません。

   C.旧暦の2008年 8月30日を新暦に変換したい

 なぜだと思います?
 もうお解りですね。もし「どこが違うのかな」と思う方がいれば B,Cをよく
 見比べてください。違いが判るはず。

 新暦では当たり前のことでも旧暦では当たり前でないことがある。そう言う
 ことですね。
 と、たまには「解答保留」のまま終わるのもいいかと本日のこぼれ話はここ
 まで。

 なぜ Cじゃだめか判らないという方は・・・お便りください。


  (『暦のこぼれ話』に取り上げて欲しい話があれば、
   magazine.sp@koyomi.vis.ne.jp までお願いします。)
こよみのぺーじ 日刊☆こよみのページ スクラップブック