Javascript:如何生成每月日期?

时间:2015-02-25 13:55:49

标签: javascript date

我需要计算月度日期,即给定特定日期,例如,生成接下来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,具体取决于年份?谢谢!

4 个答案:

答案 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);
    }
  1. 前进一个月
  2. 将日期设置为月中的第一天
  3. 退一天(上个月的最后一天)
  4. 写日期(前置0并使用slice()来获取最后两个字符)
  5. 前一天返回下个月
  6. 增加月份