質問

来訪者が少しでも増えればと、試しに占いのページを作ってみたいと思うのですが、そこで一番困ったのは、四柱推命等で使う万年暦の求め方です。膨大な万年暦を打ち込むのは大変だし、ミスも起こりうることなので、何かいいプログラミング方法、もしくはサンプルソースなどはどこかにないでしょうか。
あるいは公開された万年暦の既存の物があれば、可能なら使わせていただければ幸いです。
言語は問いません。

通報する

回答 (3件)

有名なのは「ツェラーの公式」です。
昔BASICとCOBOLとMIFESエディタのマクロで作りました。
計算式は、検索していただけば見つかると思います。
とても便利な計算式なのですが、問題があって、2000年
2月28日(この年はうるう年なので29日まで)までは
正確に計算できますが、3月1日以降は途中で負の値が
出て計算不能になります。1900年代が計算基準だからです。
ですから、どこかの年の1月1日の曜日を割り出して
おいて、そこから数えるようにプログラムすれば問題
なくできます。

余談ですが、いわゆるY2K問題も、西暦を下2桁で表した
のとは別に、この計算式を搭載したプログラムでも
起こることが分かりましたよ。マクロの計算結果が
おかしくなったことに気づきました。

この回答へのお礼

「ツェラーの公式」ですね。調べてみて参考にさせていただきます。解説ありがとうございました。

No.1のymmasayanです。

>カレンダーもさることながら、十干と十二支を出したいのです。

十干と十二支は年と日の両方ありますね。いずれにしても通算年または通算日を10または12で割れば簡単に(?)求まるでしょう。

この回答へのお礼

再度回答ありがとうございました。

Windowsの時刻をダブルクリックするととカレンダーが出ます。
これが万年時計になっているようです。
ただし、システム日付ですから,いじることは余りお勧めしませんが。

つぎの方法は計算で求めるものです。1900年1月1日を1日目として
通算日を計算するのです。
1年を365.2422日として(西暦年ー1900)をかけて切捨てすれば
その年の先頭(実は前の日)の通算日が出ます。
後は月日からその年の通算日を出して足します。
この最後の通算日を7で割ると曜日が求まります。
確か、1900年1月1日は日曜日だったような気が。

この回答へのお礼

ありがとうございます。
カレンダーもさることながら、十干と十二支を出したいのです。
いわゆる、
甲・乙・丙・丁・戊・己・・・
子・丑・寅・卯・辰・巳・午・・・
といったものです。
これを効率よく求める方法はないものかと。

このQ&Aは役に立ちましたか?2 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集