javascript - 如何创建开始日期和结束日期之间的日期数组?

标签 javascript arrays for-loop if-statement

我想创建一个从 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)”的列表。我该如何纠正这个问题?

Image of the list

最佳答案

当您执行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/

相关文章:

javascript - javascript 中的 CSS 样式不起作用

javascript - 访问 Node 请求的body属性

检查数组的出现次数并输出到新数组。 C

php - 我 honeSTLy 不知道如何制定这个按引用传递的难题

arrays - swift 代码 : how do you build a Dictionary of Array of String based on Dictionary entry being nil

r - for循环中使用ggplot进行绘图不起作用

javascript - 根据值循环遍历 CSV 数据并将其分离到辅助数组中

javascript - 如何将文本框的值获取到脚本中的变量?

javascript - 表单提交 js/jquery 停留在同一页面

c - 在字符串中搜索子字符串