1. Date
getMonth()
method
To get the number of months between two dates in JavaScript:
- Use
date1.getMonth() - date2.getMonth()
to get the month difference between the two dates. - Use
date1.getYear() - date2.getYear()
to get the difference between the two dates. - Add the month difference to the year difference multiplied by 12, i.e,
monthDiff + yearDiff * 12
.
For example:
function differenceInMonths(date1, date2) {
const monthDiff = date1.getMonth() - date2.getMonth();
const yearDiff = date1.getYear() - date2.getYear();
return monthDiff + yearDiff * 12;
}
// June 5, 2022
const date1 = new Date('2022-06-05');
// March 17, 2021
const date2 = new Date('2021-03-17');
const difference = differenceInMonths(date1, date2);
console.log(difference); // 15
Our reusable differenceInMonths()
function takes two Date
objects and returns the difference in months between them. The first argument is the start date, and the second is the end date.
The Date
getMonth()
method returns a zero-based number that represents the month of a particular date.
Note: “Zero-based” here means that 0
is January, 1
is February, 2
is March, etc.
Apart from subtracting the months, we also need to subtract the years, because the two dates might have different years, and this would of course affect the number of months between them. We use the getFullYear()
method to get the years of the dates and subtract them.
The Date
getFullYear()
method returns a number that represents the year of a particular date.
A year equals 12 months, so after getting the year difference, we multiple it by 12 to get the equivalent months, and add it to the month difference.
2. date-fns
differenceInMonths()
function
Alternative we can use the differenceInMonths()
function from the date-fns
NPM package to quickly get the difference in months between two dates in JavaScript. It works just like our own differenceInMonths()
function, taking two Date
objects and returning the difference in their months.
import { differenceInMonths } from 'date-fns';
const date1 = new Date('2022-08-10');
const date2 = new Date('2020-02-24');
const difference = differenceInMonths(date1, date2);
console.log(difference); // 29
Every Crazy Thing JavaScript Does
A captivating guide to the subtle caveats and lesser-known parts of JavaScript.