回答編集履歴

1

レアケース対応

2018/04/26 08:38

投稿

miyabi-sun
miyabi-sun

スコア21194

test CHANGED
@@ -88,17 +88,21 @@
88
88
 
89
89
 
90
90
 
91
+ 今回は月曜日スタートなので+2日ですね。
92
+
93
+
94
+
91
95
  [Document manipulate add](https://momentjs.com/docs/#/manipulating/add/)
92
96
 
93
97
 
94
98
 
95
99
  ```JavaScript
96
100
 
97
- date.add(1, 'days')
101
+ date.add(2, 'days')
98
102
 
99
103
  console.log(date.format('YYYY/MM/DD'))
100
104
 
101
- // 2018/04/08
105
+ // 2018/04/09
102
106
 
103
107
  ```
104
108
 
@@ -122,13 +126,41 @@
122
126
 
123
127
  var end = start + 6
124
128
 
125
- console.log(start, end) // 7, 13
129
+ console.log(start, end) // 9, 16
126
130
 
127
131
  ```
128
132
 
129
133
 
130
134
 
131
- 従って、第二週は7〜13日です。
135
+ 従って、第二週は9〜16日です。
136
+
137
+ あれ?ちょっと待ってください、質問文の条件は日曜日が週末扱いなので1週間ずれていますね。
138
+
139
+ このように月曜日スタートかつ1日目が日曜日の場合、
140
+
141
+ Moment.jsでは日曜日を週の初めとしますので丸々1週間分ずれます。
142
+
143
+ 従って7日減算して対応しましょう。
144
+
145
+
146
+
147
+ ```JavaScript
148
+
149
+ var start = parseInt(date.format('DD'))
150
+
151
+ if (start > 7) {
152
+
153
+ start = start - 7
154
+
155
+ }
156
+
157
+ var end = start + 6
158
+
159
+ console.log(start, end) // 2, 8
160
+
161
+ ```
162
+
163
+
132
164
 
133
165
  ※もし最終週を求める場合は週の途中で月が変わる可能性が高いので、別途月末のものを作成して日付けが超えそうなら少ない方の日数を答えとしましょう。
134
166