Javascript jQuery滑块设置不正确的ui.value

Javascript jQuery滑块设置不正确的ui.value,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我有一个滑块,其min值为2012年1月1日,而max值为2018年12月31日 当我移动min日期滑块时,出于某种原因,max日期值将重置为2018年11月23日 我认为这类似于此处的舍入问题>>>,但我不知道如何解决日期舍入问题 我已经记录了大量的console.logs,以查看max日期重置的位置。基本上,一旦单击滑块,jQuery滑块将同时设置min和max值。我试着在引擎盖下找,但没有多大帮助。我甚至尝试了一些其他的事件,以查看它们的ui.values返回了什么,但都没有结果。他们都将

我有一个滑块,其
min
值为
2012年1月1日
,而
max
值为
2018年12月31日

当我移动
min
日期滑块时,出于某种原因,
max
日期值将重置为2018年11月23日

我认为这类似于此处的舍入问题>>>,但我不知道如何解决日期舍入问题

我已经记录了大量的
console.log
s,以查看
max
日期重置的位置。基本上,一旦单击滑块,jQuery滑块将同时设置
min
max
值。我试着在引擎盖下找,但没有多大帮助。我甚至尝试了一些其他的
事件
,以查看它们的
ui.values
返回了什么,但都没有结果。他们都将
max
日期(错误地)重置为
2018年11月23日

一句话:如何更改代码以获得幻灯片
max
date以反映实际的滑块

代码:

$("#slider").slider({
  range: true,
  min: new Date("1/1/2012").getTime(),
  max: new Date("12/31/2018").getTime(),
  step: new Date("4/1/2010").getTime() - new Date("1/1/2010").getTime(),
  values: [new Date("1/1/2012").getTime(), new Date("12/31/2018").getTime()],
  slide: function(event, ui) {
    // console.log(new Date("12/31/2018").getTime());
    // console.log(ui.values);
    sliderBegDate = new Date(ui.values[0]);
    sliderEndDate = new Date(ui.values[1]);
    $("#dateLabel1").text("From " + formatTime(new Date(ui.values[0])));
    $("#dateLabel2").text(" to " + formatTime(new Date(ui.values[1])));

    updateCharts();
  }
});

问题似乎出在你的
步骤
值上——目前你一次前进3个月,这并不等于你的
min-max
范围,因此它正在调整你的
max
以适应
步骤

你可以改变你的
最大值
,或者找到一个适合你的
步骤
金额-在这个演示中,我将
步骤
设置为4天,这样就可以了

$(“#滑块”).滑块({
范围:对,
最小值:新日期(“2012年1月1日”).getTime(),
最长:新日期(“2018年12月31日”).getTime(),
步骤:345600000,
值:[新日期(“2012年1月1日”).getTime(),新日期(“2018年12月31日”).getTime(),
幻灯片:功能(事件、用户界面){
sliderBegDate=新日期(ui.values[0]);
sliderEndDate=新日期(ui.values[1]);
$(“#dateLabel1”).text(“From”+新日期(ui.values[0]);
$(“#dateLabel2”).text(“to”+新日期(ui.values[1]);
}
});

演示
演示
-这与您的步长值有关。。。要演示这一点,请运行下面的代码,查看哪些日期属于您想要的“步长范围”

如果你想一次前进3个月,那么最接近2018年12月31日(相比)的时间是2019年1月1日

let run=true,
计数=0,
安全网=10000,
起始日期=新日期(“2012年1月1日”),
停止日期=新日期(“2018年12月31日”),
月增长率=3,
currentDate=新日期(开始日期),
值=[];
while(currentDate=安全网){
运行=错误;
}否则{
值。推送(当前日期);
currentDate=新日期(currentDate.setMonth(currentDate.getMonth()+monthsToIncrement));
}
}
设lastDate=新日期(值[values.length-1]);
警报(`从“${startDate.toLocaleDateString()}”开始,按“${monthsToIncrement}”月递增,到“${stopDate.toLocaleDateString()}”最近的日期是“${lastDate.toLocaleDateString()}”。。\r\n\r\n按“确定”,然后打开浏览器控制台查看此范围内的所有可用值。`);

console.log(值)
如果可能的话,您可以包括
formatTime
功能吗?