Time 为什么d3时间范围函数在使用step时会标准化值?
为什么以下范围会起作用Time 为什么d3时间范围函数在使用step时会标准化值?,time,d3.js,Time,D3.js,为什么以下范围会起作用 d3.time.minute.range( new Date('Sat Aug 17 2013 00:00:00 GMT-0400'), new Date('Sat Aug 17 2013 06:00:00 GMT-0400'), 22); …返回这样的数组 [ Sat Aug 17 2013 00:00:00 GMT-0400 (Eastern Daylight Time), Sat Aug 17 2013 00:22:00 GMT-0400
d3.time.minute.range(
new Date('Sat Aug 17 2013 00:00:00 GMT-0400'),
new Date('Sat Aug 17 2013 06:00:00 GMT-0400'),
22);
…返回这样的数组
[
Sat Aug 17 2013 00:00:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 00:22:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 00:44:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 01:00:00 GMT-0400 (Eastern Daylight Time), // << normalized to 1am
Sat Aug 17 2013 01:22:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 01:44:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 02:00:00 GMT-0400 (Eastern Daylight Time), // << normalized to 2am
...
]
我试图渲染一个时间轴,然后使用d3.time.scale
关联像素和时间。在本例中,每个rect
I渲染表示22分钟。当我将.data()
绑定到此范围函数的结果时,我的文本
元素在所有情况下都不能清楚地表示实际时间
如果我避免使用d3.time.minute.range,而自己只增加22分钟(
.getTime()+22*60*1000
),我会遇到什么样的问题?根据mbostock在这里说的,我认为你需要自己动手:
因此:
在这里拉小提琴:
至于问题,我认为两者都可以,因为浏览器没有闰秒。我会考虑DST,但我认为这是UTC计算确定的
[
Sat Aug 17 2013 00:00:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 00:22:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 00:44:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 01:06:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 01:28:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 01:50:00 GMT-0400 (Eastern Daylight Time),
Sat Aug 17 2013 02:12:00 GMT-0400 (Eastern Daylight Time),
...
]
d3.time.minute.range(
new Date('Sat Aug 17 2013 00:00:00 GMT-0400'),
new Date('Sat Aug 17 2013 06:00:00 GMT-0400'))
.filter(function(d) {
return (d - new Date('Sat Aug 17 2013 00:00:00 GMT-0400')) % (22 * 60 * 1000) == 0;
});