我正在尝试获取与当前时间相差最多 24 小时的日期。
我正在相应地使用设置时间 api,但它给了我意想不到的结果。
let selectedDropdown = 23 //COMMENTED TO SIMULATE SELECT d3.select(".rangeSelect1").node().value;
console.log("Present Date " + new Date());
maxDate = new Date(new Date().setHours(new Date().getHours() + selectedDropdown));
console.log("selectedDropdown " + selectedDropdown);
console.log("Max Date" + maxDate);
上图是代码的输出。
当前日期显示为 3 月 29 日,加上 23 小时后,日期显示为 6 月 4 日,实际上应该是 3 月 30 日。
有任何解决这个问题的建议还是我在某个地方做错了?
最佳答案
您的 d3 选择显示为字符串而不是整数。尝试将其解析为 int,然后进行数学运算。
作为字符串添加,您会得到无效结果
let selectedDropdown = "23" //COMMENTED TO SIMULATE SELECT d3.select(".rangeSelect1").node().value;
console.log("Present Date " + new Date());
maxDate = new Date(new Date().setHours(new Date().getHours() + selectedDropdown));
console.log("selectedDropdown " + selectedDropdown);
console.log("Max Date" + maxDate);
首先将其解析为 int。将 selectedDropdown 变量包装在 parseInt 中
let selectedDropdown = "23" //COMMENTED TO SIMULATE SELECT d3.select(".rangeSelect1").node().value;
console.log("Present Date " + new Date());
maxDate = new Date(new Date().setHours(new Date().getHours() + parseInt(selectedDropdown)));
console.log("selectedDropdown " + selectedDropdown);
console.log("Max Date" + maxDate);
关于JavaScript 日期对象未按预期设置小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55425509/