这里是业余编码员,这个问题超出了我的薪水等级。我正在尝试构建一个动态的 html/css 日历,其中的单元格是根据今天的日期填充的。我得到今天的日期,然后尝试添加天数以填充另外 13 天(通过 html elements.innerHTML 循环)。
如果我尝试 setDate(30 + 2) 然后 getDate()。该代码工作正常。 Javascript 计算出 6 月在第 30 天结束,结果如愿为 2(7 月 2 日)
但这只有在只有一个调用的情况下才有效,如果我有一个循环,或者多次调用这段代码,那么结果是不同的。是否有一些异步的东西阻碍了工作?这是代码: 如果您离开“result2”通话并评论其他通话,效果很好,但多次通话时,事情会中断并且数字会重复。请帮忙!
const theDate = new Date();
const todaysDate = 30;
theDate.setDate(todaysDate + 1);
let result1 = theDate.getDate();
theDate.setDate(todaysDate + 2);
let result2 = theDate.getDate();
theDate.setDate(todaysDate + 3);
let result3 = theDate.getDate();
theDate.setDate(todaysDate + 4);
let result4 = theDate.getDate();
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
最佳答案
6 月有 30 天,而 7 月有 31 天。
当您第一次将日期设置为 32 时,您会将其设置为 6 月 32 日,而 6 月 30 日之后的日期会将其推至 7 月 2 日。 (32-30=2)
当您再次设置为 32 时,已经是 7 月了,因此 7 月 31 日之后的日期会将其推到 8 月 1 日 (32-31=1)。
关于javascript - 为什么 Javascript 的 Date.getDate() .setDate() 行为如此不可预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72691495/