Javascript 如何获得日期范围内的每一天?
我需要得到一个表示日期A和日期B之间范围的天数数组。例如: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语言中的一个常见问题(查看副作用等),但问题的核心是,您设置的每个循环的开始日期都比设置为前一个循环的日期要多,因此产生了奇怪的输出 这里有两个选项:
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