Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript time.ticks不';t输出正确的日期_Javascript_Datetime_D3.js - Fatal编程技术网

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)