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

回答編集履歴

2

start追加

2018/03/30 08:20

投稿

x_x
x_x

スコア13749

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  input.type = 'week';
6
6
  input.valueAsDate = date;
7
7
  let value = input.value; // "2018-W13"
8
- return { year: parseInt(value.substring(0, 4), 10), week: parseInt(value.substring(6), 10) };
8
+ return { year: parseInt(value.substring(0, 4), 10), week: parseInt(value.substring(6), 10), start: input.valueAsDate };
9
9
  }
10
10
  ```
11
11
  -- 17:05 追記
@@ -19,5 +19,5 @@
19
19
 
20
20
  // 確認したい日付。
21
21
  var d = new Date(2022, 1, 21);
22
- console.log(getWeekInfo(new Date(d - dif))); // {year: 2022, week: 1}
22
+ console.log(getWeekInfo(new Date(d - dif))); // {year: 2022, week: 1, start: Mon Jan 03 2022 09:00:00 GMT+0900 (東京 (標準時))}
23
23
  ```

1

解決方法を追記

2018/03/30 08:20

投稿

x_x
x_x

スコア13749

answer CHANGED
@@ -1,8 +1,23 @@
1
1
  仕様が特殊なため利用できるかわかりませんが、input要素を使って週情報を取得する方法です。
2
2
  ```JavaScript
3
+ function getWeekInfo(date) {
3
- let input = document.createElement('input');
4
+ let input = document.createElement('input');
4
- input.type = 'week';
5
+ input.type = 'week';
5
- input.valueAsDate = new Date(2018, 2, 30);
6
+ input.valueAsDate = date;
6
- console.log(input.value); // "2018-W13"
7
+ let value = input.value; // "2018-W13"
8
+ return { year: parseInt(value.substring(0, 4), 10), week: parseInt(value.substring(6), 10) };
9
+ }
10
+ ```
11
+ -- 17:05 追記
12
+ 1月4日が含まれる日が1週目ということのようですので、次のようにしてみてはどうでしょうか?
13
+ ```JavaScript
14
+ // 差分を出しておく。
15
+ let a = new Date(referenceDate);
16
+ a.setMonth(0);
17
+ a.setDate(4);
18
+ let dif = referenceDate - a;
7
19
 
20
+ // 確認したい日付。
21
+ var d = new Date(2022, 1, 21);
22
+ console.log(getWeekInfo(new Date(d - dif))); // {year: 2022, week: 1}
8
23
  ```