R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

閏年

何か飽きてきたので、ちょっと違う話題です。

閏年

の話が一部で話題になっていますが、この辺りの規則は、古来からのプログラマなら皆知っている基礎知識です。

基本的には、4 で割り切れる年が閏年。
但し、100で割り切れる場合は閏年じゃない。
が、400で割り切れる場合は、やっぱり閏年という話。

2400年は400で割り切れるので閏年だけど、2100年は400で割り切れなくて100で割り切れるので閏年じゃない訳です。

これを基にして、1年1月1日を1日目とした時に、ある日付は何日目になるのかを取得する算式と、逆算する式を持っておくと、日付間の日数を計算する際に便利だったり、曜日の算出(7で割れば良いだけの話だからね)に役立ちます。

でも DateTime 型があるので、最近ではあんまり必要ない知識なのかな?

投稿日時 : 2007年11月22日 13:16

Feedback

# re: 閏年 2007/11/22 13:32 シャノン

…最近どこかで見た話題だな。

# re: 閏年 2007/11/22 13:32 凪瀬

1年が365.242199日だとかいう無駄知識が役に立つかもしれませんね。
0.242199 * 4 = 0.968796
なので、4年に1度1日を足せば誤差が年間0.007801日に収まる。
0.007801 * 100 = 0.7801
なので、100年に一度1日を引けば誤差が年間-0.002199日に収まる。
-0.002199 * 400 = -0.8796
なので、400年に一度1日を足せば誤差が年間0.000301日に収まる。
ということを繰り返すわけです。
次は、3000年に一度、1日引く必要がありますね。

まぁどうせ地球の自転なんて早くなったり遅くなったりしてるんだから天体観測を基準に適時補正かけるんでしょうけど。
そう、閏秒みたいに。

# re: 閏年 2007/11/22 13:32 シャノン

http://jibun.atmarkit.co.jp/lskill01/rensai/algo03/algo01.html

# re: 閏年 2007/11/22 13:46 凪瀬

なんか、方法論ばかりで閏年の原理を解説しているところが見当たらないな…
なんで4年・100年・400年で割り切れるときにON/OFFしているか考えないのかな?

# re: 閏年 2007/11/22 15:10 シャノン

公理でいいんじゃないですか?w

# re: 閏年 2007/11/22 15:10 シャノン

あ、せっかくだから原理を聞いてみよう。
Zellerの公式ってどうなってんの?

# re: 閏年 2007/11/22 16:29 凪瀬

余りをうまいこと辻褄あわせているんだと思うけど。
結局、最後にmod 7しちゃうんで、式を展開していくと原理が見えるというか、
曜日に影響を及ぼす、つまり7の倍数じゃない暦の要素を式にして変形するとこうなるというか。

# 閏年というかExcelの日付 2007/11/22 16:57 Kox Blog

閏年というかExcelの日付

# re: 閏年 2007/11/26 11:22 R・田中一郎

シャノンさん、凪瀬さん

天然のものを数式に割り当てるといろいろ大変なんだな、ということは理解できました^^;

タイトル
名前
Url
コメント