2016-10-21 19 views
1

次の日付がある場合:2015-23%Y-%Wの週23日(2015年6月1日~2015年6月7日)です。d3が正しくない週の開始を返します

私はその週の日付を返すために、D3にformatメソッドを使用します。

var cameron = d3.time.format('%Y-%W').parse;

cameron('2015-23');

それはMon Jun 08 2015 00:00:00 GMT+0100 (BST)

を返します。しかし、私が得たの必要があります。Mon Jun 01 2015 00:00:00 GMT+0100 (BST)

次のドキュメントによると:https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Formatting.md%Wweek number of the year (Monday as the first day of the week) as a decimal number [00,53].であるはずですが、代わりに1週間先にジャンプしています!

答えて

2

これは予期した結果です。

d3-time-formatで使用される%W指示は、ISO週の日付ではありません。 [00、53]は​​ゼロベースの月曜日です。つまり、任意の年の最初の月曜日は常に1です。まだ彼によると、そうhttps://en.wikipedia.org/wiki/ISO_week_date

:同じ年の前に、この最初の月曜日に任意の日付が0「ISO週日付」と

で、彼はこの(ISO 8061)を意味

  • 2015から00は、1月5日(月曜日)、2015年
  • 2015から52と2016から00は12月28日(月曜日)、2015
  • です12月29日(月曜日)、2014年
  • 2015から01である
  • 2015-53および2016-01は2016年1月4日月曜日です。
+0

戻ってくる週が何であるかは制御できません。解決策は何ですか?解析する前に週番号から1を除算するだけですか? – Cameron

+0

あなたはそうすることができます、または別のライブラリ/メソッドを使用してISO週を取得します。 –

関連する問題