javascript - 为什么 Javascript 的 Date.getDate() .setDate() 行为如此不可预测?

标签 javascript html css date getdate

这里是业余编码员,这个问题超出了我的薪水等级。我正在尝试构建一个动态的 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/

相关文章:

javascript - JSLint 给出奇怪的 "weird relation"消息

php - 这段代码不起作用的任何特殊原因?我似乎无法弄清楚这个问题

css - 960gs格中格

html - 边框在不应该应用于 sibling 时

javascript - 正在编译 less modifyVars 时加载图标

javascript - 覆盖来自 cypress.env.json 的配置变量

javascript - 在不同的 div 中插入图像

javascript - JQuery - 复选框的返回值

javascript - 如何通过 HTTP 将 HTML 文件加载到字符串中以便在 JavaScript 中使用?

javascript - fabricjs 删除背景图片