【问题标题】:Add days to Javascript Date object, and also increment month向 Javascript Date 对象添加天数,并增加月份
【发布时间】:2023-03-04 19:16:01
【问题描述】:

查看前面的问题和answers 看来这应该可行:

var palindrome = new Date('2011-11-11');
var december = new Date('2011-11-11');

december.setDate(palindrome.getDate()+20); 
//should be december, but in fact loops back over to Nov 1st)

我的jsFiddle

是否有一种简单的方法可以确保月份正确递增,或者我是否遗漏了一些明显的东西?

【问题讨论】:

  • var day = 60 * 60 * 24; december.setTime(december.getTime() + (day * 20)); 但是我不确定如何添加月份。

标签: javascript date


【解决方案1】:

你可以这样做:

var dayOffset = 20;
var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000;
december.setTime(december.getTime() + millisecondOffset); 

【讨论】:

    【解决方案2】:

    getMonth() 调用返回一个介于 0 和 11 之间的值,其中 0 是 1 月,11 是 12 月,因此 10 表示 11 月。在字符串中使用它时,您需要将值增加 1。如果您只是将它作为字符串输出,您会看到它具有正确的日期。注意我还必须更改开始日期格式。它似乎不喜欢2011-11-11,所以我做了11/11/2011http://jsfiddle.net/9HLSW/

    【讨论】:

      【解决方案3】:

      您的代码是正确的,但是您错误地将其转换为字符串

      getMonth()0 开头,表示 1 月,以 11 结束,表示 12 月。所以你需要做的就是像这样给月份加 1:

      alert(endDate.getFullYear() + "-" + (endDate.getMonth()+1) +"-"+ endDate.getDate());   
      

      注意额外的括号 - 因为您在连接字符串时正在执行数学运算。您不会希望以“101”作为月份。

      要查看日期是否正确,请使用 endDate.toDateString() 以完全限定名称(即:1 月 - 12 月)显示日期。

      alert(endDate.toDateString());
      

      有关 Date 对象的更多信息,请查看 w3schools 中的 this section

      【讨论】:

        猜你喜欢
        • 2010-11-06
        • 2020-06-11
        • 2014-05-10
        • 2019-04-19
        • 2017-07-26
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        相关资源
        最近更新 更多