Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得日期范围内的每一天?_Javascript_Date - Fatal编程技术网

Javascript 如何获得日期范围内的每一天?

Javascript 如何获得日期范围内的每一天?,javascript,date,Javascript,Date,我需要得到一个表示日期A和日期B之间范围的天数数组。例如: const startDate=新日期(“2021-02-26”) 今日施工=新日期(“2021-03-13”) //预期产出: //[26,27,28,1,2,3,4,6,7,8,9,10,11,12,13]发生的事情是,你正在变异传入的起始日期。这是pass-by-reference语言中的一个常见问题(查看副作用等),但问题的核心是,您设置的每个循环的开始日期都比设置为前一个循环的日期要多,因此产生了奇怪的输出 这里有两个选项:

我需要得到一个表示日期A和日期B之间范围的天数数组。例如:

const startDate=新日期(“2021-02-26”)
今日施工=新日期(“2021-03-13”)
//预期产出:

//[26,27,28,1,2,3,4,6,7,8,9,10,11,12,13]
发生的事情是,你正在变异传入的
起始日期。这是pass-by-reference语言中的一个常见问题(查看副作用等),但问题的核心是,您设置的每个循环的开始日期都比设置为前一个循环的日期要多,因此产生了奇怪的输出

这里有两个选项:

  • 每次添加
    1
    ,而不是
    i
  • 不要对它进行任何修改,而是在每次迭代中创建一个新的日期对象。这是最好的选择,因为这意味着您不会意外地更改传入然后稍后使用的日期
第二个选项的示例如下所示:

函数get15DaysRange(currentDate){
return[…数组(15)].map((\ux,i)=>{
currentDate=新日期(currentDate);//克隆日期对象
currentDate.setDate(currentDate.getDate()+1);//递增
返回当前日期;
})
}

发生的是,您正在对传入的
起始日期进行变异。这是pass-by-reference语言中的一个常见问题(查看副作用等),但问题的核心是,您设置的每个循环的开始日期都比设置为前一个循环的日期要多,因此产生了奇怪的输出

这里有两个选项:

  • 每次添加
    1
    ,而不是
    i
  • 不要对它进行任何修改,而是在每次迭代中创建一个新的日期对象。这是最好的选择,因为这意味着您不会意外地更改传入然后稍后使用的日期
第二个选项的示例如下所示:

函数get15DaysRange(currentDate){
return[…数组(15)].map((\ux,i)=>{
currentDate=新日期(currentDate);//克隆日期对象
currentDate.setDate(currentDate.getDate()+1);//递增
返回当前日期;
})
}

您基本上可以在
开始日期中添加1天,然后使用
getDate()


基本上,您可以在
startDate
中添加1天,并使用
getDate()


这回答了你的问题吗?这回答了你的问题吗?正确的问题,但“天是86400秒”并不总是正确的。@vp_arth您提出了一个难以置信的有效点;我相应地编辑了我的答案:)问题正确,但“天是86400秒”并不总是正确的。@vp_arth你提出了一个非常有效的观点;我相应地编辑了我的答案:)
const startDate = new Date("2021-02-26")
const today = new Date("2021-03-13")

while (startDate <= today) {
  console.log(startDate.getDate());
  startDate.setDate(startDate.getDate() + 1);
}
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13