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

回答編集履歴

1

レアケース対応

2018/04/26 08:38

投稿

miyabi-sun
miyabi-sun

スコア21501

answer CHANGED
@@ -43,12 +43,14 @@
43
43
  もし日曜日スタートが良いなら1日足しましょう。
44
44
  もし月曜日スタートが良いなら2日足しましょう。
45
45
 
46
+ 今回は月曜日スタートなので+2日ですね。
47
+
46
48
  [Document manipulate add](https://momentjs.com/docs/#/manipulating/add/)
47
49
 
48
50
  ```JavaScript
49
- date.add(1, 'days')
51
+ date.add(2, 'days')
50
52
  console.log(date.format('YYYY/MM/DD'))
51
- // 2018/04/08
53
+ // 2018/04/09
52
54
  ```
53
55
 
54
56
  > 4月の何日から何日までかなどを求める
@@ -60,10 +62,24 @@
60
62
  ```JavaScript
61
63
  var start = parseInt(date.format('DD'))
62
64
  var end = start + 6
63
- console.log(start, end) // 7, 13
65
+ console.log(start, end) // 9, 16
64
66
  ```
65
67
 
66
- 従って、第二週は713日です。
68
+ 従って、第二週は916日です。
69
+ あれ?ちょっと待ってください、質問文の条件は日曜日が週末扱いなので1週間ずれていますね。
70
+ このように月曜日スタートかつ1日目が日曜日の場合、
71
+ Moment.jsでは日曜日を週の初めとしますので丸々1週間分ずれます。
72
+ 従って7日減算して対応しましょう。
73
+
74
+ ```JavaScript
75
+ var start = parseInt(date.format('DD'))
76
+ if (start > 7) {
77
+ start = start - 7
78
+ }
79
+ var end = start + 6
80
+ console.log(start, end) // 2, 8
81
+ ```
82
+
67
83
  ※もし最終週を求める場合は週の途中で月が変わる可能性が高いので、別途月末のものを作成して日付けが超えそうなら少ない方の日数を答えとしましょう。
68
84
 
69
85
  ---