- ベストアンサー
万年暦を導き出すプログラミング
来訪者が少しでも増えればと、試しに占いのページを作ってみたいと思うのですが、そこで一番困ったのは、四柱推命等で使う万年暦の求め方です。膨大な万年暦を打ち込むのは大変だし、ミスも起こりうることなので、何かいいプログラミング方法、もしくはサンプルソースなどはどこかにないでしょうか。 あるいは公開された万年暦の既存の物があれば、可能なら使わせていただければ幸いです。 言語は問いません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Windowsの時刻をダブルクリックするととカレンダーが出ます。 これが万年時計になっているようです。 ただし、システム日付ですから,いじることは余りお勧めしませんが。 つぎの方法は計算で求めるものです。1900年1月1日を1日目として 通算日を計算するのです。 1年を365.2422日として(西暦年ー1900)をかけて切捨てすれば その年の先頭(実は前の日)の通算日が出ます。 後は月日からその年の通算日を出して足します。 この最後の通算日を7で割ると曜日が求まります。 確か、1900年1月1日は日曜日だったような気が。
その他の回答 (2)
- Hiroki_myt
- ベストアンサー率26% (29/109)
有名なのは「ツェラーの公式」です。 昔BASICとCOBOLとMIFESエディタのマクロで作りました。 計算式は、検索していただけば見つかると思います。 とても便利な計算式なのですが、問題があって、2000年 2月28日(この年はうるう年なので29日まで)までは 正確に計算できますが、3月1日以降は途中で負の値が 出て計算不能になります。1900年代が計算基準だからです。 ですから、どこかの年の1月1日の曜日を割り出して おいて、そこから数えるようにプログラムすれば問題 なくできます。 余談ですが、いわゆるY2K問題も、西暦を下2桁で表した のとは別に、この計算式を搭載したプログラムでも 起こることが分かりましたよ。マクロの計算結果が おかしくなったことに気づきました。
お礼
「ツェラーの公式」ですね。調べてみて参考にさせていただきます。解説ありがとうございました。
- ymmasayan
- ベストアンサー率30% (2593/8599)
No.1のymmasayanです。 >カレンダーもさることながら、十干と十二支を出したいのです。 十干と十二支は年と日の両方ありますね。いずれにしても通算年または通算日を10または12で割れば簡単に(?)求まるでしょう。
お礼
再度回答ありがとうございました。
お礼
ありがとうございます。 カレンダーもさることながら、十干と十二支を出したいのです。 いわゆる、 甲・乙・丙・丁・戊・己・・・ 子・丑・寅・卯・辰・巳・午・・・ といったものです。 これを効率よく求める方法はないものかと。