date-fns addBusinessdays 但包括预定义的假期日期
Posted
技术标签:
【中文标题】date-fns addBusinessdays 但包括预定义的假期日期【英文标题】:date-fns addBusinessdays but include predefined holiday-dates 【发布时间】:2020-04-10 23:50:34 【问题描述】:所以基本上我正在尝试使用addBusinessDays(new Date(), 3)
来设置开始日期而不考虑周末。但是,我也需要在其中使用日期列表(假期)。我找不到任何有关如何将这些假期添加到 addBusinessDays 的文档。
我正在使用 date-fns v2+
示例代码:
import addBusinessDays from 'date-fns';
const holidays = [
'2019-12-20'
]
console.log(addBusinessDays(new Date(), 3)) // should include holidays => 2019-12-24
【问题讨论】:
不要使用内置解析器,请参阅Why does Date.parse give incorrect results? 由于您使用的是 date-fns,请使用 its parser。 【参考方案1】:你也许可以做这样的事情?
const newHolidays = holidays.map(holiday =>
return addBusinessDays(new Date(holiday), 3);
);
console.log(newHolidays);
newHolidays - 这是一个包含每个日期 + 3 天的新数组(保持原样不变)
Read about .map here
.map 为数组中的每个元素按顺序调用一次提供的回调函数,并根据结果构造一个新数组。
您可能还想使用 cmets 中提到的 date-fns 来“解析”日期。你可以这样做:
function parseDates(dates)
return dates.map(date =>
return parse(date, "yyyy-MM-dd", new Date());
);
const parsedHolidays = parseDates(holidays);
然后你会想把'newHolidays'改成类似这样:
const newHolidays = parsedHolidays.map(holiday =>
return addBusinessDays(new Date(holiday), 3);
);
或者,如果您希望在使用 addBusinessDays 之前一一解析它们,您可以将解析函数移到holidays.map 中
【讨论】:
以上是关于date-fns addBusinessdays 但包括预定义的假期日期的主要内容,如果未能解决你的问题,请参考以下文章