我从字符串中获取日期,对其进行解析以获取日、月和年的组成部分,并使用它们来实例化 Date 对象。

我想要实现的是将日期增加一天。
一切正常,除了 setDate 方法有时坚持返回无效日期...

例如,如果我将 1 天添加到 2011 年 2 月 28 日,它将返回我 2011 年 2 月 29 日...实际上不存在的日期。

这是 JavaScript 的原生日期/时间 API 的错误/限制,还是我做错了什么?我发现很难相信它在不检查日期有效性的情况下会这样做。

 var myDate = new Date(2011, 2, 28);
 alert(myDate);
 myDate.setDate(myDate.getDate() + 1);
 alert(myDate); // 29 February 2011 !

谢谢。

最佳答案

你不在二月 - 第 2 个月是三月

JS 月份是 0 为基础的

 var myDate = new Date(2011, 1, 28); // 28th of Feb
 alert(myDate);
 myDate.setDate(myDate.getDate() + 1);
 alert(myDate); // 1st of March 2011 !

PS:如果您使用 var d = new Date() 创建日期并且之后不通过执行 d.setHours(0,0,0,0) 来标准化小时数,那么您可能会遇到夏令时的一些问题

关于JavaScript setDate 返回错误的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5497637/

10-11 06:51