忍者ブログ

きままなひとりごと

引っ越しました。新しいブログはnmtysh.logです。
2015/12/27

ブログを引っ越しました

ブログの引っ越しを行いました。
別サービスへの移行になるため過去記事をすべて再確認しつつ、記事の削除やリンクの差し替えなどを行っています。
現在では役に立たなくなっているtipsなどは削除していますのでご了承ください。

新しいブログはこちらです。
nmtysh.log

今後は新しいブログのほうで更新していきますのでそちらをご覧ください。
2017/07/26 (Wed) 07:30

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2009/03/11 (Wed) 19:15

ツェラーの公式で曜日を求める(備忘録)

与えられた日付から曜日を計算する方法を考えていて、"ある日付を基点としてその日付から曜日を求めたい日付までの日数を計算して、基点の日付の曜日(0~6)を足して全体を7で割ったあまりを出す。"という方法を考えました。
ただ、この方法だとこの基点とした日付よりも前の日付の曜日は調べられません。(試していませんが、)そして、この基点の日付をより前の日付に設定する場合、その曜日を調べるのが大変です。

そこでインターネットで調べるとツェラーの公式というものが出てきたので、このツェラーの公式について調べてみました。
ツェラーの公式(Zeller's congruence)は、西暦の年、月、日からその日が何曜日であるかを算出する公式である。 via ツェラーの公式 - wikipedia
Wikipediaにある説明を読んでもどうしてこの式で求まるのかさっぱり分かりません。
他のサイトを見てみると、mixi's Diaryというサイトに"ツェラーの公式の証明"のページがあり参考になったので(記憶力が悪いので)忘れたときのために、書いておきます。

Fairfieldの公式

「y年 m月 d日 までの日数」(3<=m<=14)
= 365*y + [y/4] - [y/100] + [y/400] + [306*(m+1)/10] + d - 428
[x]はxを超えない最大の整数
※計算の都合上、1,2月は前年の13,14月として計算する。

このFairfieldの公式を使ってツェラーの公式を作る。
ツェラーの公式
「y年 m月 d日の曜日 (0:日曜 ~ 6:土曜)」(3<=m<=14)
=(365*y + [y/4] - [y/100] + [y/400] + [306*(m+1)/10] + d - 428) %7
=(y + [y/4] - [y/100] + [y/400] + [(13m + 8)/5] + d) %7


参考にしたページ
mixi's Diary
ツェラーの公式の証明 - はじめに
ツェラーの公式の証明 - その1
ツェラーの公式の証明 - その2
ツェラーの公式の証明 - その3

拍手[1回]

PR