”週数と曜日” で指定された祝日が何日かを出してみる


2017年5月22日

こんにちは、ダディです。

最近HTMLでカレンダーを作っていたのですが、その中で自動で「祝日」の日に色をつけるという要件にあたりました。
カレンダーのそれぞれのマスには「月」「日」「曜日」の値を持たせていましたので、
後は予め祝日の「月」と「日」を保存したデータベースと照らし合わせて、対応する所の色を塗り分ければ良いのですが…。

“そういえば日本の祝日って「◯月の第◯週目の◯曜日」ってめっちゃややこしいのがあったような…”

と、いうことで、◯年、◯月の◯週目の◯曜日までわかっている祝日の「日」を特定する計算式を作りました。
それがコチラ。

週数 = x, 曜日 = n, 対象の月の”1日目”の曜日 = n’ とすると、求められる日 = d は
d = 7(x – 1) + (n – (n’ – 7)) % 7 + 1

※ここで曜日n 及び n’ は数値で表すものとする。月曜 = 1,2,,,6, 日曜 = 7

多分、いや大方色んな人が既にこの解を導き出しているとは思うのですが、
上記のような簡潔な式を記したサイト等が意外にも少なかったので、記事にさせていただきました。

とりあえず、これをPHPで使えるようにするとこのような感じになります。

結果はこんな感じです。



その他

Posted by ダディ