有时在思考我想发表的东西时,它的一个特定部分吸引了我的注意力,我决定把它撕下来,只写一个方面的东西。这就是今天发生的事情,当时我正在思考一种特殊的日期计算方法,我想看看它是否有意义。
给定一个特定的日期,我想给它加上一定的天数(或周数,或月数),但我希望结果 "更喜欢 "营业日。这和增加营业日不一样。因此,举例来说,从现在开始的20天与从现在开始的20个营业日是相当不同的。相反,我希望主要差异接近我所期望的持续时间,但只是 "调整 "为落在一个营业日。
为了测试我的理论是否可行,我决定使用date-fns日期库。
date-fns有大量有用的日期工具,包括我实现逻辑所需的几个工具。
- 添加--让你快速添加日期的持续时间
- isWeekend- 如果一个日期是在周末,则返回true。
- nextMonday--通过Docker和Lambda启动一个Web3密码矿机,生成机器驱动的艺术。不,实际上它只是返回一个日期后的下一个星期一。
我从一个简单的函数开始,它接受一个输入日期和一个持续时间(天):
const addDayPreferBusinessDay = (date,numDays) => {
let newDate = add(date, { days:numDays });
if(isWeekend(newDate)) {
newDate = nextMonday(newDate);
}
return newDate;
}
我想这是很简单的。我写了一个快速测试,从今天开始,添加0到14天。结果是这样的:
Fri 2022-09-23, plus 0 days, using addDayPreferBusinessDay: Fri 2022-09-23
Fri 2022-09-23, plus 1 days, using addDayPreferBusinessDay: Mon 2022-09-26
Fri 2022-09-23, plus 2 days, using addDayPreferBusinessDay: Mon 2022-09-26
Fri 2022-09-23, plus 3 days, using addDayPreferBusinessDay: Mon 2022-09-26
Fri 2022-09-23, plus 4 days, using addDayPreferBusinessDay: Tue 2022-09-27
Fri 2022-09-23, plus 5 days, using addDayPreferBusinessDay: Wed 2022-09-28
Fri 2022-09-23, plus 6 days, using addDayPreferBusinessDay: Thu 2022-09-29
Fri 2022-09-23, plus 7 days, using addDayPreferBusinessDay: Fri 2022-09-30
Fri 2022-09-23, plus 8 days, using addDayPreferBusinessDay: Mon 2022-10-03
Fri 2022-09-23, plus 9 days, using addDayPreferBusinessDay: Mon 2022-10-03
Fri 2022-09-23, plus 10 days, using addDayPreferBusinessDay: Mon 2022-10-03
Fri 2022-09-23, plus 11 days, using addDayPreferBusinessDay: Tue 2022-10-04
Fri 2022-09-23, plus 12 days, using addDayPreferBusinessDay: Wed 2022-10-05
Fri 2022-09-23, plus 13 days, using addDayPreferBusinessDay: Thu 2022-10-06
Fri 2022-09-23, plus 14 days, using addDayPreferBusinessDay: Fri 2022-10-07
考虑到今天是星期五,你可以看到接下来的几天都会撞到星期一,下周也是如此。
为了方便起见,我决定将其与严格意义上的增加营业日进行比较。日期信息管理系统有一个函数用于此,]addBusinessDays](date-fns.org/v2.29.3/doc…
Fri 2022-09-23, plus 0 days, using addBusinessDays: Fri 2022-09-23
Fri 2022-09-23, plus 1 days, using addBusinessDays: Mon 2022-09-26
Fri 2022-09-23, plus 2 days, using addBusinessDays: Tue 2022-09-27
Fri 2022-09-23, plus 3 days, using addBusinessDays: Wed 2022-09-28
Fri 2022-09-23, plus 4 days, using addBusinessDays: Thu 2022-09-29
Fri 2022-09-23, plus 5 days, using addBusinessDays: Fri 2022-09-30
Fri 2022-09-23, plus 6 days, using addBusinessDays: Mon 2022-10-03
Fri 2022-09-23, plus 7 days, using addBusinessDays: Tue 2022-10-04
Fri 2022-09-23, plus 8 days, using addBusinessDays: Wed 2022-10-05
Fri 2022-09-23, plus 9 days, using addBusinessDays: Thu 2022-10-06
Fri 2022-09-23, plus 10 days, using addBusinessDays: Fri 2022-10-07
Fri 2022-09-23, plus 11 days, using addBusinessDays: Mon 2022-10-10
Fri 2022-09-23, plus 12 days, using addBusinessDays: Tue 2022-10-11
Fri 2022-09-23, plus 13 days, using addBusinessDays: Wed 2022-10-12
Fri 2022-09-23, plus 14 days, using addBusinessDays: Thu 2022-10-13
我想你真的可以看到,特别是在最后,事情开始出现分歧。我的方法 "更好 "吗?对于我想使用它的目的,我认为它是。显然,时间会证明一切,而且像往常一样,我很想知道人们是否认为这很有用。请注意,我使用了另一个有用的date-fns工具来渲染我的日期,格式为