d3中的d3.time.interval.range()不会返回等间隔

时间:2015-10-14 08:15:37

标签: javascript d3.js

我使用以下功能创建等间隔的时间间隔:

d3.time.second.range(new Date(1444717315000), new Date(1444717615000), 38)



var _text = "";
d3.time.second.range(new Date(1444717315000), new Date(1444717615000), 38).forEach(function(d) {
  
  _text = _text + d.toString();
 _text = _text + '<br>';
  
  
})

document.getElementById("timearray").innerHTML = _text
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div id="timearray">
&#13;
&#13;
&#13;

这在d3 API中指定为:

  

#interval.range(开始,停止[,步骤])

     

返回start或after之后的每个时间间隔。如果指定了步骤,则将根据间隔编号(例如d3.time.day的月中某天)返回每个步骤的间隔。例如,步骤2将以d3.time.day返回月份的第1个,第3个,第5个等。

虽然我希望它返回结果数组,等间隔38秒,如:

0: Tue Oct 13 2015 11:52:00 GMT+0530 (India Standard Time)
1: Tue Oct 13 2015 11:52:38 GMT+0530 (India Standard Time)
2: Tue Oct 13 2015 11:53:16 GMT+0530 (India Standard Time)
3: Tue Oct 13 2015 11:53:54 GMT+0530 (India Standard Time)
..
..

我得到的是(不是等间距):

0: Tue Oct 13 2015 11:52:00 GMT+0530 (India Standard Time)
1: Tue Oct 13 2015 11:52:38 GMT+0530 (India Standard Time)
2: Tue Oct 13 2015 11:53:00 GMT+0530 (India Standard Time)
3: Tue Oct 13 2015 11:53:38 GMT+0530 (India Standard Time)
4: Tue Oct 13 2015 11:54:00 GMT+0530 (India Standard Time)
5: Tue Oct 13 2015 11:54:38 GMT+0530 (India Standard Time)
6: Tue Oct 13 2015 11:55:00 GMT+0530 (India Standard Time)
7: Tue Oct 13 2015 11:55:38 GMT+0530 (India Standard Time)
8: Tue Oct 13 2015 11:56:00 GMT+0530 (India Standard Time)
9: Tue Oct 13 2015 11:56:38 GMT+0530 (India Standard Time)

这种用法是错误的吗?或者API是否意味着什么呢?我们有不同的功能吗?

1 个答案:

答案 0 :(得分:1)

d3.time尊重Date对象的结构,而不仅仅是将其视为十进制数,这是描述你想要的东西的一种方法。

因此,为了达到你想要的效果,你不想使用d3.time,而只是生成一系列相隔38000毫秒的数字。

&#13;
&#13;
var _text = "";
d3.range(1444717320000, 1444717615000, 38000)
.map(function(t){return new Date(t)})
.forEach(function(d) {
  
  _text = _text + d.toString();
 _text = _text + '<br>';
  
  
})

document.getElementById("timearray").innerHTML = _text
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div id="timearray">
&#13;
&#13;
&#13;