5

例如,我有start并且end

start = new Date(2013, 2, 28)
end   = new Date(2013, 3, 2)

我怎么能从中得到这样的数组

[new Date(2013, 2, 28),
 new Date(2013, 2, 29),
 new Date(2013, 2, 30),
 new Date(2013, 2, 31),
 new Date(2013, 3, 1),
 new Date(2013, 3, 2)]

我目前正在阅读有关Time-Scales 的文档,但仍然无法理解如何使用它们来实现此效果。(或者,也许有更好的方法来做到这一点,如果是这样,我很高兴知道)

4

3 回答 3

6

要更新d3 V4 语法的此答案,请使用:

var dateRange = d3.timeDays(new Date(2013, 2, 28), new Date(2013, 3, 2));

一些重要的注意事项:

  • 月份是 0 索引的,所以 0 是January。此示例将从 3 月 28 日开始,而不是 2 月 28 日。
  • 返回值中不包含结束日期。因此,本例中的最后一个日期是第 1 天,而不是第 2 天。
于 2017-03-01T23:13:48.833 回答
4

刚刚发现我可以使用range时间间隔

d3.time.day.range(new Date(2013, 2, 28),
                  new Date(2013, 3, 2 + 1))
于 2013-06-22T00:37:32.167 回答
3

用 d3 做到这一点:

var dateArray = d3.time.scale()
                .domain([new Date(2013, 2, 28), new Date(2013, 3, 2)])
                .ticks(d3.time.days, 1)

在线演示:http: //jsfiddle.net/aczuV/1/

于 2013-06-22T00:31:15.300 回答