在Javascript中,今天(31/5)加1个月将得到1/7

时间:2019-05-31 03:41:26

标签: javascript date

今天我刚刚发现,如果我在今天的日期加上1个月,它将返回1/7。

有人可以为此提供帮助吗?非常感谢。

注意:我没有将日期分配给today,因为今天是31/5,有些人仍然是30/5

var today = new Date(); // today is 31/5 in my timezone
console.log(today);
today.setMonth(today.getMonth() + 1);
console.log(today);

1 个答案:

答案 0 :(得分:3)

这是日期在JavaScript中的工作方式的怪异方式。根据{{​​3}}:

  

该月的当前日期将对此行为产生影响   方法。从概念上讲,它将增加由   该月的当前日期至指定的新月的第一天   参数,以返回新日期。例如,如果当前   value是2016年8月31日,调用setMonth的值为1将   返回2016年3月2日。这是因为2016年2月有29天。

在您的情况下,如果将一个月添加到5月31日,那么您将获得6月31日。这不是一个有效的日期,JavaScript将其转换为7月1日