『まだ、走ってんの?』

KSB素人ランナー、妄走~日誌

【とうとつに】日付から曜日を計算する方法

唐突にですが。。。

任意の日付の曜日を当てる(計算)する方法について書きます(笑)

f:id:IwamuRock:20190306231324p:plain

 

塔別な理由はないのですが、たまたま計算する方法の一つを紹介されて

そのあと色々調べて&試してみて何となくやり方がわかったので、

忘れないようにメモ代わりに残しておきます(笑)

  

こういう日付を言われて、パッと曜日を答えるのはどこかで見たことがある方は

多いと思いますが、そもそもですが

この曜日の計算方法にはちゃんとした公式があります!

(僕も初めて知りました。。。)

それがツェラーの公式

ツェラーの公式 - Wikipedia

 年  月  日の曜日を求める。

ただし、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で月曜日~日曜日)を求めるには、次の式

を使う。

うん。。。わかりませんね~

f:id:IwamuRock:20190306230331p:plain

これをもっと単純にしてみます。

まず↓の日付を考えます(AABBは上2桁がAAで下2桁がBBということです。)

f:id:IwamuRock:20190306215930p:plain

まず↓の①~⑤の数字を計算&拾ってきます。

f:id:IwamuRock:20190306220400p:plain

 

ここで注意が!!

Cが1月&2月の場合のみ、①&②は前年を使う!

(※1990年1月なら1989年みたいな感じ)

f:id:IwamuRock:20190306230440p:plain

①と④はまんまですね!

③と⑤は暗記するしかないです。(⑤は1800~2000年代だけで十分だと思います)

②は例えば59とかだと4で割ると14あまり3ですので14になります。

①~⑤までの数字が出そろうとあとは↓の計算をすると曜日が求まります!

 

f:id:IwamuRock:20190306221118p:plain

 ここで計算を楽にする方法が、

 

①~⑤を足したあと7で割ったあまりも、①~⑤それぞれを7で割ったあまりも一緒

になるので計算的には後者のほうが楽です。

f:id:IwamuRock:20190306230548p:plain

(ただし最後にもう一度7で割る必要があるかもです)

 

これでもまだよくわからないと思いますので、

例題で~(笑)

じゃあ【1】平成の始まり「1989年1月8日」

【2】平成の最後「2019年4月30日」

 を計算してみましょう。

f:id:IwamuRock:20190306224858p:plain

なのでに対応する曜日なので日曜日!!

2問目~

f:id:IwamuRock:20190306225618p:plain

なのでに対応する曜日なので火曜日!!

正解は↓

f:id:IwamuRock:20190306225844p:plain

 まっ、ただこんだけです~

これでも暗算は大変ですが、、、鍛えて即答出来れば。。。

ドヤ顔出来るかも~(笑)

f:id:IwamuRock:20190306230148j:plain

もっと簡単な方法があればぜひ教えてください!

 

それでは~

f:id:IwamuRock:20190306230632p:plain