我想创建一个从 2014/0/1 到 2020/11/31 的日期列表(日期以 JavaScript 表示)。
这是代码
var initialTime = new Date(2014, 0, 1);
var endTime = new Date( 2050, 11, 31);
var arrTime = [];
arrTime.push(initialTime);
if( initialTime < endTime) {
for( var q = initialTime; q <= endTime; q.setDate(q.getDate() + 1)) {
arrTime.push(q);
}
}
document.querySelector("#Time").innerHTML = arrTime;
这就是代码返回的内容。它只是“Sun Jan 01 2051 00:00:00 GMT-0500 (EST)”的列表。我该如何纠正这个问题?
最佳答案
当您执行q.setTime( ... )
时,您正在修改Date
对象本身。您在每次迭代时将相同的对象插入数组,因此修改它会修改整个数组。
如果您只想要日期的字符串表示形式,您可以这样做:
let initialTime = new Date("2018-03-09Z08:00:00")
,endTime = new Date("2018-03-14Z08:00:00")
,arrTime = []
;
for (let q = initialTime; q <= endTime; q.setDate(q.getDate() + 1)) {
arrTime.push(q.toString());
}
console.log(arrTime);
或者,如果您想要一组实际的 Date
实例:
let initialTime = new Date("2018-03-09Z08:00:00")
,endTime = new Date("2018-03-14Z08:00:00")
,arrTime = []
,dayMillisec = 24 * 60 * 60 * 1000
;
for (let q = initialTime; q <= endTime; q = new Date(q.getTime() + dayMillisec)) {
arrTime.push(q);
}
console.log(arrTime);
关于javascript - 如何创建开始日期和结束日期之间的日期数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067806/