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

时间:2015-11-11 15:32:03

标签: javascript d3.js

我的序数比例在其域的第二部分返回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 个答案:

答案 0 :(得分:0)

这个问题是双重的(如果我们算是一个dufus,那就是三倍):

  1. 域值是字符串,所以在计算the_days之后,我会很好地转换回年 - 月 - 日值。
  2. 夏令时间的变化发生在2015-10-24和2015-10-25之间。因此,{em>日期值已从2015-10-24T00:00:00.000Z更改为Date 2015-10-25T01:00:00.000Z,而days_in_range()返回new Date('2015-10-25'),但Date 2015-10-25T00:00:00.000Z会返回@PathVariable is to obtain some placeholder from the uri (Spring call it an URI Template) — see Spring Reference Chapter 16.3.2.2 URI Template Patterns @RequestParam is to obtain an parameter — see Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParam 。注意一小时的班次。