diff --git a/README.md b/README.md index 7bf4976..759d475 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,12 @@ This is a plugin for Day.js that allows for Date calculations to take place that - [businessDaysInMonth() => [Day.js Object]](#businessdaysinmonth--dayjs-object) - [lastBusinessDayOfMonth() => Day.js Object](#lastbusinessdayofmonth--dayjs-object) - [businessWeeksInMonth() => [[Day.js Object]]](#businessweeksinmonth--dayjs-object) + - [getHolidays() => [string]](#getholidays--string) + - [setHolidays() => void](#setholidays--void) + - [getHolidayFormat() => string](#getholidayformat--string) + - [setHolidayFormat() => void](#setholidayformat--void) + - [getWorkingWeekdays() => [number]](#getworkingweekdays--number) + - [setWorkingWeekdays() => void](#setworkingweekdays--void) - [Local Development and Contributing](#local-development-and-contributing) ## Getting Started @@ -74,13 +80,13 @@ Check if the date is a holiday. Returns **true** or **false** ```javascript // Add holidays to plugin options const options = { - holidays: ['2020-12-25'], - holidayFormat: 'YYYY-MM-DD', + holidays: [`2020-12-25`], + holidayFormat: `YYYY-MM-DD`, }; dayjs.extend(businessDays, options); // Christmas day is a Friday -dayjs('2020-12-25').isHoliday(); // returns true +dayjs(`2020-12-25`).isHoliday(); // returns true ``` ### isBusinessDay() => Boolean @@ -89,10 +95,10 @@ Check if the date is a business day. Returns **true** or **false** ```javascript // Christmas day is a Friday -dayjs('2020-12-25').isBusinessDay(); // returns true +dayjs(`2020-12-25`).isBusinessDay(); // returns true // Boxing day is a Saturday -dayjs('2020-12-26').isBusinessDay(); // returns false +dayjs(`2020-12-26`).isBusinessDay(); // returns false ``` ### businessDaysAdd(number) => Day.js Object @@ -102,7 +108,7 @@ dayjs('2020-12-26').isBusinessDay(); // returns false Adds the `number` of Business Days to the current date. Returns the new date as a **Day.js object** ```javascript -dayjs('2020-12-25').businessDaysAdd(3).format('DD/MM/YYYY'); // returns 30/12/2020 +dayjs(`2020-12-25`).businessDaysAdd(3).format(`DD/MM/YYYY`); // returns 30/12/2020 ``` ### businessDaysSubtract(number) => Day.js Object @@ -112,7 +118,7 @@ dayjs('2020-12-25').businessDaysAdd(3).format('DD/MM/YYYY'); // returns 30/12/20 Subtracts the `number` of Business Days from the current date. Returns the new date as a **Day.js object** ```javascript -dayjs('2020-12-30').businessDaysSubtract(3).format('DD/MM/YYYY'); // returns 25/12/2020 +dayjs(`2020-12-30`).businessDaysSubtract(3).format(`DD/MM/YYYY`); // returns 25/12/2020 ``` ### businessDiff(date) => Number @@ -122,8 +128,8 @@ dayjs('2020-12-30').businessDaysSubtract(3).format('DD/MM/YYYY'); // returns 25/ Calculates the number of business days between a Day.js date and `date`. Returns the difference as a **positive or negative number**. ```javascript -dayjs('2020-12-25').businessDiff(dayjs('2020-12-30')); // returns -5 -dayjs('2020-12-30').businessDiff(dayjs('2020-12-25')); // returns 5 +dayjs(`2020-12-25`).businessDiff(dayjs(`2020-12-30`)); // returns -5 +dayjs(`2020-12-30`).businessDiff(dayjs(`2020-12-25`)); // returns 5 ``` ### nextBusinessDay() => Day.js Object @@ -132,7 +138,7 @@ Calculates the next Business Day. Returns a **Day.js object** ```javascript // 25th December 2020 is a Friday. Next business day is Monday 28th December. -dayjs('2020-12-25').nextBusinessDay().format('DD/MM/YYYY'); // returns 28/12/2020 +dayjs(`2020-12-25`).nextBusinessDay().format(`DD/MM/YYYY`); // returns 28/12/2020 ``` ### prevBusinessDay() => Day.js Object @@ -141,7 +147,7 @@ Calculates the previous Business Day. Returns a **Day.js object** ```javascript // 28th December 2020 is a Monday. Previous business day is Friday 25th December. -dayjs('2020-12-28').prevBusinessDay().format('DD/MM/YYYY'); // returns 25/12/2020 +dayjs(`2020-12-28`).prevBusinessDay().format(`DD/MM/YYYY`); // returns 25/12/2020 ``` ### businessDaysInMonth() => [Day.js Object] @@ -149,8 +155,8 @@ dayjs('2020-12-28').prevBusinessDay().format('DD/MM/YYYY'); // returns 25/12/202 Calculates all of the business days in a given month. Returns an array of **Day.js objects** ```javascript -dayjs('2020-12-25').businessDaysInMonth(); -// returns equivalent of [dayjs('2020-12-01'), dayjs('2020-12-02'), ...] +dayjs(`2020-12-25`).businessDaysInMonth(); +// returns equivalent of [dayjs(`2020-12-01`), dayjs(`2020-12-02`), ...] ``` ### lastBusinessDayOfMonth() => Day.js Object @@ -159,7 +165,7 @@ Calculates the last Business Day of the month. Returns a **Day.js object** ```javascript // 30th September 2021 is a Thursday and is the last business day of the month. -dayjs('2021-09-01').lastBusinessDayOfMonth().format('DD/MM/YYYY'); // returns 30/09/2021 +dayjs(`2021-09-01`).lastBusinessDayOfMonth().format(`DD/MM/YYYY`); // returns 30/09/2021 ``` ### businessWeeksInMonth() => [[Day.js Object]] @@ -167,15 +173,75 @@ dayjs('2021-09-01').lastBusinessDayOfMonth().format('DD/MM/YYYY'); // returns 30 Calculates all of the business weeks and days in a given month. Returns an two dimensional array of **Day.js objects** ```javascript -dayjs('2020-12-25').businessWeeksInMonth(); +dayjs(`2020-12-25`).businessWeeksInMonth(); // returns equivalent of // [ -// [dayjs('2020-12-01'), dayjs('2020-12-02'), ...], -// [dayjs('2020-12-07'), dayjs('2020-12-08'), ...], +// [dayjs(`2020-12-01`), dayjs(`2020-12-02`), ...], +// [dayjs(`2020-12-07`), dayjs(`2020-12-08`), ...], // ... // ] ``` +### getHolidays() => [string] + +Returns an array of **strings** representing the currently set holidays + +```javascript +const options = { + holidays: [`2020-12-25`], + holidayFormat: `YYYY-MM-DD`, +}; +dayjs.extend(businessDays, options); + +dayjs.getHolidays(); // returns [ `2020-12-25` ] +``` + +### setHolidays() => void + +Sets the holiday list to the given array of **strings** + +```javascript +dayjs.setHolidays([ `2020-12-25`, `2021-01-01` ]); +``` + +### getHolidayFormat() => string + +Returns a **string** representing the currently expected holiday format + +```javascript +const options = { + holidays: [`2020-12-25`], + holidayFormat: `YYYY-MM-DD`, +}; +dayjs.extend(businessDays, options); + +dayjs.getHolidaysFormat(); // returns [ `YYYY-MM-DD` ] +``` + +### setHolidayFormat() => void + +Sets the holiday list to the given a **string** + +```javascript +dayjs.setHolidayFormat(`MM-DD-YYYY`); +``` + +### getWorkingWeekdays() => [number] + +Returns an array of **numbers** representing the current days fo the week that are considered business days + +```javascript +dayjs.getWorkingWeekdays(); // returns [ 1, 2, 3, 4, 5 ] +``` + +### setWorkingWeekdays() => void + +Sets the days of the week that are considered business days to the given array of **numbers** where 0 is Sunday and 6 is Saturday + +```javascript +dayjs.setWorkingWeekdays([ 0, 3, 4, 5 ]); +``` + ## Local Development and Contributing I am more than happy to accept PRs for bugs, improvements or new features.