JavaScript setDate返回错误的日期

我从字符串中获取日期,解析它得到日期,月份和年份的构成词,并使用它们来实例化Date对象。

我试图实现的是将日期递增一天。 这一切都工作正常,但setDate方法坚持有时返回无效日期...

例如,如果我在2011年2月28日增加1天,它将返回我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月 - 第2月是3月

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)小时进行标准化,那么您可能在夏令时中存在一些问题


不,你正在使用三月,不是吗? 3月29日存在。

var myDate = new Date(2011, 1, 28); // 28th of february

你忘了,它从0开始计数。var myDate = new Date(2011,2,28); 实际上是星期一2011年3月28日00:00:00 GMT + 0300(FLE夏令时){}

尝试

 var myDate = new Date(2011, 1, 28);
 alert(myDate);
 myDate.setDate(myDate.getDate() + 1);
 alert(myDate); // 1 Mar 2011 !
链接地址: http://www.djcxy.com/p/36697.html

上一篇: JavaScript setDate returning wrong dates

下一篇: When is ContextRefreshedEvent fired in Spring?