d3返回错误的周开始

时间:2016-10-21 14:03:37

标签: javascript d3.js

如果我有以下日期:2015-23,格式为%Y-%W,即2015年第23周(2015年6月1日至2015年6月7日)。

当我在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 %W应该是week number of the year (Monday as the first day of the week) as a decimal number [00,53].但是相反它会提前一周!

1 个答案:

答案 0 :(得分:2)

这是预期的结果。根据迈克博斯托克的说法:

  

d3-time-format使用的%W指令不是ISO周日期;它是[00,53]中从零开始的星期一。这意味着任何给定年份的第一个星期一总是1号;在同一年的第一个星期一之前的任何日期是0。

按照ISO周日和#34;,他的意思是(ISO 8061):https://en.wikipedia.org/wiki/ISO_week_date

所以,仍然按照他的说法:

  • 2015-00是2014年12月29日星期一。
  • 2015-01是2015年1月5日星期一。
  • 2015-52和2016-00是2015年12月28日星期一。
  • 2015-53和2016-01是2016年1月4日星期一。
相关问题