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);
}
- 前进一个月
- 将日期设置为月初
- 后退一天(上个月的最后一天)
- 写入日期(在前面加上 0 并使用 slice() 获取最后两个字符)
- 前进一天 return 到下个月
- 增加月份
我需要计算每月的日期,即给定一个特定日期,例如生成未来 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);
}
- 前进一个月
- 将日期设置为月初
- 后退一天(上个月的最后一天)
- 写入日期(在前面加上 0 并使用 slice() 获取最后两个字符)
- 前进一天 return 到下个月
- 增加月份