繁体   English   中英

D3:在其范围的一部分中返回未定义的有序刻度

[英]D3: ordinal scale returning undefined in part of its range

我有一个顺序刻度,该刻度在其域的第二部分返回undefined

// Return an array of all dates between date1 and date2 inclusive.
function days_in_range(date1, date2) {
    if (date1 > date2)
        return [];

    var date  = new Date(date1.getTime());
    var dates = [];
    while (date <= date2) {
        dates.push(new Date(date));
        date.setDate( date.getDate() + 1 );
    }
    return dates;
}

min_date = new Date("2015-10-12");
max_date = new Date('2015-11-10');
the_dates = days_in_range(min_date, max_date);
xx_scale = d3.scale.ordinal().domain(the_dates).rangeRoundBands([0, 790])

xx_scale(new Date('2015-10-12')); // Returns 4.
xx_scale(new Date('2015-10-24')); // Returns 328.
xx_scale(new Date('2015-10-25')); // Expect 355, but returns undefined.

从2015-10-25到范围的结尾,我不确定。 从域名开始到2015年10月24日,我得到了合理的数字。

days_in_range()函数似乎确实返回正确。 我在这里复制它只是为了完整。

max_date设置为2015-10-26会产生相同的间隔(24到25之间)。

关于我在做什么的任何指示?

问题是两个方面的(如果我们算我是杜夫斯,则是三个方面):

  1. 域值是字符串,因此在计算the_days之后,我可以很好地转换回年月日值。
  2. 夏令时更改发生在2015-10-24和2015-10-25之间。 因此, 2015-10-24T00:00:00.000Z值从days_in_range()返回的日期从Date 2015-10-24T00:00:00.000ZDate 2015-10-25T01:00:00.000Z ,但是new Date('2015-10-25')返回Date 2015-10-25T00:00:00.000Z 注意一小时轮班。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM