Javascript 为什么这个函数没有';t返回指定范围内的时间?

Javascript 为什么这个函数没有';t返回指定范围内的时间?,javascript,Javascript,考虑以下代码 //源代码https://stackoverflow.com/a/66035934/14659574 常量getRandomTime=(offsetHour=0,rangeInhour=2)=>{ const curTicks=Date.now()+0*(偏移量*60*60*1000); 常量addTicks=(Math.random()*rangeInHours)*60*60*1000; 返回新日期(curTicks+addTicks); }; console.log((新日期

考虑以下代码

//源代码https://stackoverflow.com/a/66035934/14659574
常量getRandomTime=(offsetHour=0,rangeInhour=2)=>{
const curTicks=Date.now()+0*(偏移量*60*60*1000);
常量addTicks=(Math.random()*rangeInHours)*60*60*1000;
返回新日期(curTicks+addTicks);
};
console.log((新日期());

对于(让i=0;i我相信错误就在这一部分:
Date.now()+0*(offsetHour*60*60*1000);

通过将偏移小时数乘以零,可以有效地将其重置为零并抵消偏移

因此,无法从UTC更改起点

从方法中删除
0*
后,它将按预期工作:

const getRandomTime=(offsetHour=0,rangeinhour=2)=>{
//删除了有问题的0*
const curTicks=Date.now()+(offsetHour*60*60*1000);
常量addTicks=(Math.random()*rangeInHours)*60*60*1000;
返回新日期(curTicks+addTicks);
};
//打印UTC-5和1小时之间的时间。
log(“从现在起一小时内:”,getRandomTime(-5,1));
//打印UTC-5和2小时之间的时间。
log(“从现在起最多两个小时:”,getRandomTime(-5,2));
//例子还在继续
log(“从现在起最多三个小时:”,getRandomTime(-5,3));

log(“从现在起最多四个小时:”,getRandomTime(-5,4))
我试图用具体的例子来解释这个函数,但我不知道计算障碍到底是怎么起作用的。如果你能看一看,告诉我你是否理解或者有什么需要澄清的,我可以试着用更好的例子来解释。Gential:“屈膝礼”有什么意义数学?您总是添加0。这是@DaveNewton的错误。这样做会阻止应用偏移量,因此无法更改时区UTC@Jordan我知道:)这就是我问的原因。@DaveNewton你知道为什么下面的答案输出的时间比现在少吗?原始答案的作者在评论中提到,第一个参数只允许你获得未来日期的随机时间。传递0实际上是从现在开始的随机时间()请参见,是的。如果将0传递给函数,则其不同的原因是函数使用UTC时间。你的时区是什么?然后,当您记录
new Date()
并比较它时,您会看到本地时间中的时间。即使将偏移量设置为
-5
,我也会得到类似2021-04-12T00:38:19.674ZMy时区是
EST
所以UTC-5,我调用
getRandomTime(-5,2))
,它返回的时间不在范围内