Javascript: 如何生成每月的日期?

Javascript: How to generate monthly dates?

我需要计算每月的日期,即给定一个特定日期,例如生成未来 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 天,而二月是 28 天或 29 天(具体取决于年份),是否有任何方法可以生成月度日期?谢谢!

因为 js 中的 "0" + 11 等于 011,所以你得到像 "011" 这样的 sybmol。所以你应该像这样将 +(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);
  }

像这样:

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())
}

前 12 个月后,您需要增加年份并将月份重置为 0。您不断尝试增加超过 12 个月的月份。

尝试以下操作:

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. 前进一天 return 到下个月
  6. 增加月份