Javascript日期()将2012年2月29日转换为2012年3月1日 这是我的代码: var d=新日期(); var日期=29; 变量月份=1;//二月 风险值年份=2012年;//六分之一年 d、 设定日期; d、 setUTCMonth(月); d、 setUTCFullYear(年); d、 刚毛(0); d、 SETUTC分钟(0); d、 setUTCSeconds(0); 编写(d.getUTCDate()+“”+d.getUTCMonth()+“”+d); 这是Firefox中的结果:

Javascript日期()将2012年2月29日转换为2012年3月1日 这是我的代码: var d=新日期(); var日期=29; 变量月份=1;//二月 风险值年份=2012年;//六分之一年 d、 设定日期; d、 setUTCMonth(月); d、 setUTCFullYear(年); d、 刚毛(0); d、 SETUTC分钟(0); d、 setUTCSeconds(0); 编写(d.getUTCDate()+“”+d.getUTCMonth()+“”+d); 这是Firefox中的结果:,javascript,time,Javascript,Time,1 2 2012年3月1日星期四11:00:00 GMT+1100(澳大利亚东部标准时间) 日期的值为28时: 28 1 2012年2月28日星期二11:00:00 GMT+1100(澳大利亚东部标准时间) 没有星期三! 这是JS的错误还是有其他方法可以在这里找到2012年2月29日星期三?问题在于设置项目的顺序 从今天开始,也就是2014年3月5日 然后将日期设置为29。结果:2014年3月29日 然后将月份设置为1。结果:2014年2月29日。哦,等等,这是错误的,因为2014年不是闰年,所

1
2
2012年3月1日星期四11:00:00 GMT+1100(澳大利亚东部标准时间)

日期的值为28时: 28
1
2012年2月28日星期二11:00:00 GMT+1100(澳大利亚东部标准时间)

没有星期三!
这是JS的错误还是有其他方法可以在这里找到2012年2月29日星期三?

问题在于设置项目的顺序

从今天开始,也就是2014年3月5日

然后将日期设置为29。结果:2014年3月29日

然后将月份设置为1。结果:2014年2月29日。哦,等等,这是错误的,因为2014年不是闰年,所以JS将其更正为2014年3月1日

最后,你确定了一年。最终结果是2012年3月1日

尝试先设置年份,然后设置日期,然后设置月份


或者,正确使用构造函数:
新日期(2012,1,29)
应该可以正常工作。

我更改了顺序,结果现在正确了,谢谢。但如果我只使用新日期(2012,1,29),结果是:28 1周三2012年2月29日00:00:00 GMT+1100,这很奇怪。为什么
getUTCDate()
仍然返回28?啊,因为
新日期(2012,1,29)
正在您时区的午夜创建该日期,比UTC早11小时。因此UTC仍然是前一天下午1点。尝试
新日期(2012,2,1)
您将看到UTC的2月29日。这不是一个bug,而是一个功能
var d = new Date();
var date = 29;
var month = 1; // Feb
var year = 2012; // Bissextile year
d.setUTCDate(date);
d.setUTCMonth(month);
d.setUTCFullYear(year);
d.setUTCHours(0);
d.setUTCMinutes(0);
d.setUTCSeconds(0);
document.write(d.getUTCDate()+"<br />"+d.getUTCMonth()+"<br />"+d);