我的数据如下:
[{ x="2013-06-01", y=3}, { x="2013-07-01", y=7 }, { x="2013-08-01", y=3 }]
图表x轴格式如下:
chart.xAxis
.axisLabel('Date')
.tickFormat(function(d) { return d3.time.format('%b %Y')(new Date(d)); })
;
%b
分别于7月,6月,7月返回日期2013-06-01,2013-07-01,2013-08-01
为什么它会在上个月返回,我该如何解决?
编辑:如果日期格式为2013-06-02,它将返回正确的月份...有人知道发生了什么导致这个吗?
答案 0 :(得分:1)
@Amelia是正确的,因为时区不同,因为如果你没有指定时间,Date默认为24:00:00
。因此,如果是EDT,即-4:00,您将失去4个小时,这将使您在前一天(May 31 2013 20:00:00)
,并且由于您的日期中的日期为01
,这会使您进入上一个一个月。
如果您的日期允许,可以绕过这个时间。
chart.xAxis
.axisLabel('Date')
.tickFormat(function(d) {
d = d.split('-')
// Create new date by using new Date(year, month, day, hour, second, ms)
// Subtracting 1 is necessary since Javascript months are 0 - 11.
return d3.time.format('%b %Y')(new Date(d[0], +d[1] - 1, d[2], 12, 0, 0));
});