Prepare repository for merge
This commit is contained in:
29
javascript/snippets/add-week-days.md
Normal file
29
javascript/snippets/add-week-days.md
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Add weekdays to date
|
||||
type: snippet
|
||||
tags: [date]
|
||||
cover: digital-nomad-9
|
||||
dateModified: 2021-01-08T00:23:44+02:00
|
||||
---
|
||||
|
||||
Calculates the date after adding the given number of business days.
|
||||
|
||||
- Use `Array.from()` to construct an array with `length` equal to the `count` of business days to be added.
|
||||
- Use `Array.prototype.reduce()` to iterate over the array, starting from `startDate` and incrementing, using `Date.prototype.getDate()` and `Date.prototype.setDate()`.
|
||||
- If the current `date` is on a weekend, update it again by adding either one day or two days to make it a weekday.
|
||||
- **NOTE:** Does not take official holidays into account.
|
||||
|
||||
```js
|
||||
const addWeekDays = (startDate, count) =>
|
||||
Array.from({ length: count }).reduce(date => {
|
||||
date = new Date(date.setDate(date.getDate() + 1));
|
||||
if (date.getDay() % 6 === 0)
|
||||
date = new Date(date.setDate(date.getDate() + (date.getDay() / 6 + 1)));
|
||||
return date;
|
||||
}, startDate);
|
||||
```
|
||||
|
||||
```js
|
||||
addWeekDays(new Date('Oct 09, 2020'), 5); // 'Oct 16, 2020'
|
||||
addWeekDays(new Date('Oct 12, 2020'), 5); // 'Oct 19, 2020'
|
||||
```
|
||||
Reference in New Issue
Block a user