我需要计算月度日期,即给定特定日期,例如,生成接下来2年的日期。我想出了以下代码:
var d = new Date( '2007-12-31' );
d.setMonth( d.getMonth() + 1 );
for (var i = 1; i<24; i++){
var newdate = d.getDate() + "-" + d.getMonth()+i + '-' + d.getFullYear()
print(newdate);
}
然而,这产生了:
(...)
31-06-2008 (ok)
31-07-2008 (ok)
31-08-2008 (ok)
31-09-2008 (ok)
31-010-2008 (error, 3 characters for month)
31-011-2008 (error, 3 characters for month)
31-012-2008 (error, 3 characters for month)
31-013-2008 (error, should be 31-01-2009)
31-014-2008 (error, should be 28-02-2009)
请问,有没有办法制作月度日期,考虑到几个月是30或31天,2月是28或29,具体取决于年份?谢谢!
答案 0 :(得分:3)
像这样:
var d = new Date();
for (var i = 0, size = 24; i < size; i++){
d.setMonth(d.getMonth() + 1);
console.log(d.getDate() + "-" + (d.getMonth() + 1) + '-' + d.getFullYear())
}
答案 1 :(得分:2)
你有这样的sybmol&#34; 011&#34;因为&#34; 0&#34; js
中的+ 11等于011.因此,您应该将此+(d.getMonth())
转换为数字之前的数字。
此代码应该是正确的:
var d = new Date( '2007-12-31' );
d.setMonth( d.getMonth() + 1 );
for (var i = 1; i<24; i++){
var newdate = d.getDate() + "-" + (+(d.getMonth()) + i) + '-' + d.getFullYear()
console.log(newdate);
}
答案 2 :(得分:2)
在前12个月之后,您需要增加年份并将月份重置为0.您将继续尝试增加超过12个月的月份。
答案 3 :(得分:1)
尝试以下方法:
var d = new Date(2007, 11, 31);
d.setDate(d.getDate()+1);
for(i=1; i<24; i++) {
d.setMonth(d.getMonth()+1);
d.setDate(1);
d.setDate(d.getDate()-1);
document.write(d.getDate() + "-" + ("0" + (d.getMonth()+1)).slice(-2) + '-' + d.getFullYear() + '<br />');
d.setDate(d.getDate()+1);
}