x 轴上的数据休息一天(5 月 24 日的数据显示为 5 月 23 日,依此类推)(d3、nvd3)

Data on x-axis is one day off (data for May 24 is showing up as May 23, etc etc) (d3, nvd3)

这是一支笔:
http://codepen.io/cheapsteak/pen/MaYaNR

我正在通过 d3.select('#chart svg').datum(data)

加载数据

数据取自NPM的下载统计API,经过转换后,最终格式为

{
  key: String
  values: [{x: Date, y: Number}]
}

我从服务器获取的数据:

{
  "node-sass": {
    "downloads": [
      {
        "day": "2015-05-20",
        "downloads": 25307
      }
    ]
  }
}

我的转换函数:

function processServerData(json) {
  if (json.downloads && json.package) {
    return {
      key: json.package,
      values: json.downloads.map( entry => { return {x: new Date(entry.day), y: entry.downloads}; })
    };
  } else {
    return _.values(json).map(processServerData);
  }
}

我得到的:

我传递的内容:

{"day":"2015-05-24","downloads":11296}

确实是输入格式“2015-05-24”的时区问题

given an ISO format such as "2014-03-07" it will assume a time zone of UTC.

/ 替换所有 - 修复了它,所以不用

new Date(entry.day)

new Date(entry.day.replace(/\-/g, '/'))