雑記
”週数と曜日” で指定された祝日が何日かを出してみる
はち
更新日:2021/08/11
こんにちは、はちです。
最近HTMLでカレンダーを作っていたのですが、その中で自動で「祝日」の日に色をつけるという要件にあたりました。
カレンダーのそれぞれのマスには「月」「日」「曜日」の値を持たせていましたので、後は予め祝日の「月」と「日」を保存したデータベースと照らし合わせて、対応する所の色を塗り分ければ良いのですが…。
“そういえば日本の祝日って「◯月の第◯週目の◯曜日」ってめっちゃややこしいのがあったような…”
と、いうことで、◯年、◯月の◯週目の◯曜日までわかっている祝日の「日」を特定する計算式を作りました。
それがコチラ。
d = 7(x – 1) + (n – (n’ – 7)) % 7 + 1
※ここで曜日n 及び n’ は数値で表すものとする。月曜 = 1,2,,,6, 日曜 = 7
多分、いや大方色んな人が既にこの解を導き出しているとは思うのですが、上記のような簡潔な式を記したサイト等が意外にも少なかったので、記事にさせていただきました。
とりあえず、これをPHPで使えるようにするとこのような感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//海の日(7月の第3月曜日)を求める式(2017/7/17) $year = 2017; $month = 7; //date関数を使うため、曜日を1~7の数値で指定 //月曜日は1, 日曜日は7 $youbi = 1; $week = 3; //指定された月の一日目の曜日を取得(1~7) $n = date("N", mktime(0, 0, 0, $month, 1, $year)); //例の計算式を導入 $day = 7 * ($week - 1) + ($youbi - ($n - 7)) % 7 + 1; echo $year."年".$month."月の".$week."週目の祝日 は ".$year."/".$month."/".$day; |
結果はこんな感じです。