What is moment-business-days?
The moment-business-days npm package extends the Moment.js library to handle business days calculations. It allows you to perform operations like adding or subtracting business days, checking if a date is a business day, and customizing business days and holidays.
What are moment-business-days's main functionalities?
Add Business Days
This feature allows you to add a specified number of business days to a date. In this example, 5 business days are added to October 1, 2023.
const moment = require('moment-business-days');
let date = moment('2023-10-01');
let newDate = date.businessAdd(5);
console.log(newDate.format('YYYY-MM-DD'));
Subtract Business Days
This feature allows you to subtract a specified number of business days from a date. In this example, 3 business days are subtracted from October 10, 2023.
const moment = require('moment-business-days');
let date = moment('2023-10-10');
let newDate = date.businessSubtract(3);
console.log(newDate.format('YYYY-MM-DD'));
Check if a Date is a Business Day
This feature allows you to check if a given date is a business day. In this example, it checks if October 7, 2023, is a business day.
const moment = require('moment-business-days');
let date = moment('2023-10-07');
let isBusinessDay = date.isBusinessDay();
console.log(isBusinessDay);
Custom Business Days and Holidays
This feature allows you to customize the business days and holidays. In this example, it sets the working weekdays to Monday through Friday and adds holidays on December 25, 2023, and January 1, 2023. Then it adds 1 business day to December 24, 2023.
const moment = require('moment-business-days');
moment.updateLocale('us', {
workingWeekdays: [1, 2, 3, 4, 5],
holidays: ['2023-12-25', '2023-01-01'],
holidayFormat: 'YYYY-MM-DD'
});
let date = moment('2023-12-24');
let newDate = date.businessAdd(1);
console.log(newDate.format('YYYY-MM-DD'));
Other packages similar to moment-business-days
date-fns
date-fns is a modern JavaScript date utility library that provides a wide range of functions for manipulating dates, including business day calculations. It is modular and tree-shakeable, making it a lightweight alternative to moment-business-days.
moment-holiday
moment-holiday is another Moment.js extension that allows you to work with holidays and business days. It provides similar functionality to moment-business-days but focuses more on holiday calculations and customization.
js-joda
js-joda is a date and time library for JavaScript that is based on the Java 8 Date and Time API. It provides immutable date and time objects and includes functionality for working with business days and holidays. It is a more modern alternative to Moment.js and its extensions.
moment-business-days
This is a momentJS plugin that allows you to use only business days (Monday to Friday).
NOTES:
- This plugin is for using in NodeJS
- This plugin is based in this repo
How to use:
var moment = require('moment-business-days');
Methods:
businessAdd(days)
Will add just business days excluding Saturday and Sunday, return a moment date object:
moment('30-01-2015', 'DD-MM-YYYY').businessAdd(3)._d
businessSubtract(days)
Will subtract just business days excluding Saturday and Sunday, return a moment date object:
moment('27-01-2015', 'DD-MM-YYYY').businessSubtract(3)._d
isBusinessDay()
Check if the date is a business day and return true/false:
moment('31-01-2015', 'DD-MM-YYYY').isBusinessDay()
moment('30-01-2015', 'DD-MM-YYYY').isBusinessDay()
nextBusinessDay()
Will retrieve the next business date as moment date object:
moment('30-01-2015', 'DD-MM-YYYY').nextBusinessDay()._d
moment('02-02-2015', 'DD-MM-YYYY').nextBusinessDay()._d
monthBusinessDays()
Retrieve an array of the business days in the month, each one is a moment object.
moment('01-01-2015', 'DD-MM-YYYY').monthBusinessDays()
monthNaturalDays()
Is like monthBusinessDays(), but this method will include the weekends on it's response.
monthBusinessWeeks()
Retrieve an array of arrays, these arrays are the representation of a business weeks and each week (array) have it own business days (Monday to Friday). There could be the case that one week (array) have less than 5 days, this is because the month started on the middle of the week, for example: the first week of January 2015 just have two days, Thursday 1st and Friday 2nd. Each day in the week arrays are moment objects.
moment('01-01-2015', 'DD-MM-YYYY').monthBusinessWeeks()
monthNaturalWeeks()
It's like monthBusinessWeeks(), but this method will include weekends on it's response.
The objects returned by functions are momentjs objects (except isBusinessDay) so you can handle it with moment native functions.