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 但包括预定义的假期日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 date-fns 格式化持续时间(从 seconds 开始)

TypeError:格式不是 date-fns 中的函数

如何在 VueJS 中使用 Date-FNS?

如何使用 date-fns 格式化日期?

如何使用 date-fns 找到一周中最近的一天

在 date-fns 中获取主名月份名称