teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問をちゃんと読めていなかったので、回答を修正

2017/03/30 07:41

投稿

motuo
motuo

スコア3027

answer CHANGED
@@ -1,2 +1,7 @@
1
- この処理を実行した結果が下記の通り、**18日**となってしまっていますが、実際には2017年の第3月曜日は17日ですね。。。
1
+ この処理を実行した結果が下記の通り、**18日**となってしまっていますが、実際には2017年の第3月曜日は17日ですね。。。渡す引数は$weekdayが1で良いですよね。
2
+ 求めたい最初の月曜日の日付を求める事を考えると…
3
+ 1. $weekdayOfFirstは6(7月の最初の曜日は土曜日なので)が入ります。
2
- これは仕様として想定通りの処理しょうか??仕様実現るための+1なのだいます。![イメージ説明](dd816b4b72fc116fce2cbdf429062fbd.png)
4
+ 2. 問題の```$firstDay = $weekday - $weekdayOfFirst + 1```ですが、これを置き換える+1しない状態は、1-6-5となりますよね。そは存在しない日付なのでロジックで7すと2日になってしまいます。(つまり日曜日)
5
+ 加算する時に月曜日を含めて加算するので、1日ズレるのです。
6
+
7
+ よって、この事象を避けるために作成者は1を加算したのだと思いますよ。