【とうとつに】日付から曜日を計算する方法
唐突にですが。。。
任意の日付の曜日を当てる(計算)する方法について書きます(笑)
塔別な理由はないのですが、たまたま計算する方法の一つを紹介されて
そのあと色々調べて&試してみて何となくやり方がわかったので、
忘れないようにメモ代わりに残しておきます(笑)
こういう日付を言われて、パッと曜日を答えるのはどこかで見たことがある方は
多いと思いますが、そもそもですが
この曜日の計算方法にはちゃんとした公式があります!
(僕も初めて知りました。。。)
それが「ツェラーの公式」
年 月 日の曜日を求める。
ただし、1月と2月は、前年のそれぞれ13月・14月として扱う。たとえば、2019年1月1日・2月1日は、2018年13月1日・14月1日とする。また、紀元前 年は西暦 年として扱う。たとえば、紀元前1年・前2年・前3年は、0年・-1年・-2年となる。
曜日を表す は次の式で求められる:
はグレゴリオ暦 (Gregorian) かユリウス暦 (Julian) かで変わる項で、
ただし
- 。
はxを超えない(x以下)の最大の整数(床関数)、 は を で割った剰余である。 と は、(西暦が4桁の場合)西暦の上2桁と下2桁を表す中間変数で、たとえば2019年なら、それぞれ20と19になる。
曜日 日 月 火 水 木 金 土 h 1 2 3 4 5 6 0 D 7 1 2 3 4 5 6 は、0~6で土曜日~金曜日を表す。現在標準的な ISO 8601 の (1~7で月曜日~日曜日)を求めるには、次の式
を使う。
うん。。。わかりませんね~
これをもっと単純にしてみます。
まず↓の日付を考えます(AABBは上2桁がAAで下2桁がBBということです。)
まず↓の①~⑤の数字を計算&拾ってきます。
ここで注意が!!
Cが1月&2月の場合のみ、①&②は前年を使う!
(※1990年1月なら1989年みたいな感じ)
①と④はまんまですね!
③と⑤は暗記するしかないです。(⑤は1800~2000年代だけで十分だと思います)
②は例えば59とかだと4で割ると14あまり3ですので14になります。
①~⑤までの数字が出そろうとあとは↓の計算をすると曜日が求まります!
ここで計算を楽にする方法が、
①~⑤を足したあと7で割ったあまりも、①~⑤それぞれを7で割ったあまりも一緒
になるので計算的には後者のほうが楽です。
(ただし最後にもう一度7で割る必要があるかもです)
これでもまだよくわからないと思いますので、
例題で~(笑)
じゃあ【1】平成の始まり「1989年1月8日」と
【2】平成の最後「2019年4月30日」
を計算してみましょう。
なので1に対応する曜日なので日曜日!!
2問目~
なので3に対応する曜日なので火曜日!!
正解は↓
まっ、ただこんだけです~
これでも暗算は大変ですが、、、鍛えて即答出来れば。。。
ドヤ顔出来るかも~(笑)
もっと簡単な方法があればぜひ教えてください!
それでは~