如何在 js 中查找给定天数的天数?

  • 本文关键字:查找 js javascript date
  • 更新时间 :
  • 英文 :


如果我输入 startDate 和 endDate,我需要找到天数.从 start_date 到 end_date 我只想检索工作日,即星期一到星期五以及offcial_leave变量 for_example:

let numberOfdays;
let startDate = '2022-04-04'; //yy-mm-dd format
let endDate  =  '2022-04-08';
// Below variable come from db and vary according the start and endate
// eg:- 2022-12-25 will be holiday if we select start and end in december
let holidays = ['2022-04-05', '2022-04-07' ]

numberOfdays => 3
// I want to return number of days to 3

如何在 JavaScript 中实现这一点

谢谢

首先将startDateendDate转换为javascriptDate。然后,声明一个变量i在循环访问日期时存储。此外,声明holidayIndex,它存储当前索引,需要将假日日期与当前日期进行检查。

在循环中,将日期转换为YYYY-MM-DD格式(原始格式)以检查当前日期(isoDate)是否位于假日之间,即它不是假日日期。如果 holidayIndex 是数组的最后一个索引,那么只需检查当前日期 (isoDate) 是否不在 holidays 数组中。如果未找到,则递增numberOfDays变量。

否则,将找到假日日期,因此无需递增numberOfDays。只需递增holidayIndex即可准备好匹配下一个假期日期的即将到来的日期。

这是解决方案:

let numberOfdays = 0;
const startDate = '2022-04-04'; //yy-mm-dd format
const endDate = '2022-04-08';
// Below variable come from db and vary according the start and endate
// eg:- 2022-12-25 will be holiday if we select start and end in december
const holidays = ['2022-04-05', '2022-04-07'];
let holidayIndex = 0;
const start = new Date(startDate);
const end = new Date(endDate);
let i = start;
while (i <= end) {
const isoDate = i.toISOString().split('T')[0];
if (
(holidayIndex < holidays.length - 1 && isoDate < holidays[holidayIndex] && isoDate > holidays[holidayIndex + 1]) ||
formattedDate !== holidays[holidayIndex]
) {
numberOfdays += 1;
} else {
holidayIndex += 1;
}
i.setDate(i.getDate() + 1);
}

相关内容

  • 没有找到相关文章

最新更新