第二月曜日とか
今月の第二月曜日は何日?とかいうの。どの言語で記述するのが一番見やすいか悩んだので、意表をついてエクセルの関数でw
【前提】
A1に曜日を表す数字(セルの表示形式を「aaa」にして、「月」とかになるようにしとくとわかりやすいかも)
B1に「第二」の「二」の部分
A3に調べたい日付
【式】
=A3-DAY(A3)+(B1*7-1)-WEEKDAY(A3-DAY(A3)+(B1*7-1))+A1
【解説】
まず第X週目になりうる最大の日付を算出
- > A3-DAY(A3)+(7*B1-1)
上記日付の属する週の「0日目」を算出
- > A3-DAY(A3)+(7*B1-1)-WEEKDAY(A3-DAY(A3)+7*B1-1)
取得したい曜日分だけプラス
- > A3-DAY(A3)+(7*B1-1)-WEEKDAY(A3-DAY(A3)+7*B1-1)+A1
一応PHPで書くとこんな感じ。
$xweek = 2; // 第二週 $weekday = 1; // 月曜日 $yyyy = 2007; $mm = 5; $dd = 12; $d = mktime(1, 0, 0, $mm, $dd, $yyyy); $d = strtotime("-$dd day", $d); $d = strtotime("+".($xweek*7-1)." day", $d); $d = strtotime("+$weekday day", $d); echo date("Y/m/d", $d);
参考
CodeZine:PHP Tips:日付や時刻をパラメータとして扱う(Tips, PHP)
http://codezine.jp/a/article/aid/33.aspx