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