Javascript time.ticks不';t输出正确的日期
我的代码如下Javascript time.ticks不';t输出正确的日期,javascript,datetime,d3.js,Javascript,Datetime,D3.js,我的代码如下 const xScale = scaleTime() .domain([new Date(reports[reports.length - 1].date), new Date(reports[0].date)]) .range([margin.left, width] 其中域为日期2018-02-25至2018-03-03 我想让我的x轴显示7天:太阳25日,周一26日,周二27日,周三28日,周四1日,周五2日,周六3日 所以我用d3.ticks来得到这些tick值
const xScale = scaleTime()
.domain([new Date(reports[reports.length - 1].date), new Date(reports[0].date)])
.range([margin.left, width]
其中域为日期2018-02-25至2018-03-03
我想让我的x轴显示7天:太阳25日,周一26日,周二27日,周三28日,周四1日,周五2日,周六3日
所以我用d3.ticks来得到这些tick值
const ticksX = xScale.ticks(timeDay, 1)
然而,我得到的是6天:太阳25日,周一26日,周二27日,周三28日,周四1日,周五2日
因此,我尝试使用momentjs将我的右域名增加1:
moment(new Date(reports[0].date)).add(1, 'days')
相反,我有8天:
星期日25、星期一26、星期二27、星期三28、星期四1、星期五2、星期六3、星期一4
这是怎么回事?我找不到模式。在时间刻度中指定精确的刻度有时很困难,在D3代码中可能会令人沮丧。然而,这是设计的:时间尺度是复杂的,它们应该自动产生足够的节拍。在你的例子中,它变得更加复杂,因为有时间问题(这应该是午夜,但不能保证)和时区 有几种不同的解决方案可以帮助您获得7个刻度 第一个是将时间设置为午夜:
constxscale=d3.scaleTime()
.domain([新日期(“2018-02-25”).设定小时数(0,0,0,0),新日期(“2018-03-03”).设定小时数(0,0,0,0)];
常数ticksX=xScale.ticks(d3.timeDay,1);
console.log(ticksX)代码>