Open In App

How to Compare Dates with Moment.js?

Last Updated : 25 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Moment.js is a popular JavaScript library that developers use for parsing, manipulating, and formatting dates and times. It provides a range of methods to compare dates, making it easier to handle various date-related tasks. With Moment.js, you can use methods like isBefore, isAfter, diff, and isSame to compare dates

Run the below command before running the code in your local system:

npm i momentjs

These are the following approaches that we are going to discuss:

Using isBefore() and isAfter() Methods

We use the isBefore() and isAfter() methods from Moment.js to compare two dates. It first checks if date1 is before date2, then if date1 is after date2, and finally, if neither condition is true, it concludes that the dates are the same.

Syntax:

moment().isBefore(moment | string | number | Date | Array, granularity); 
moment().isAfter(moment | string | number | Date | Array, granularity);

Example: The below example uses isBefore and isAfter Methods to Compare Dates with Moment.js.

JavaScript
// script.js
const moment = require('moment');

const date1 = moment('2024-07-20');
const date2 = moment('2024-07-22');

if (date1.isBefore(date2)) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is before date2`);
} else if (date1.isAfter(date2)) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is after date2`);
} else {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is the same as date2`);
}

Output:

Comparing dates:
date1: 2024-07-20
date2: 2024-07-22

Result: date1 is before date2

Using diff() Method

The diff() method from Moment.js to calculate the difference between two dates in milliseconds. If the difference is negative, it means date1 is before date2; if positive, date1 is after date2. If the difference is zero, the dates are the same.

Syntax:

moment().diff(moment | string | number | Date | Array, unit, precise); 

Example: The below example uses diff Method to Compare Dates with Moment.js.

JavaScript
// script.js

const moment = require('moment');
const date1 = moment('2024-07-20');
const date2 = moment('2024-07-22');
const diff = date1.diff(date2);

if (diff < 0) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is before date2`);
} else if (diff > 0) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is after date2`);
} else {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is the same as date2`);
}

Output:

Comparing dates:
date1: 2024-07-20
date2: 2024-07-22

Result: date1 is before date2

Using isSame() Method

In this approach, we are using the isSame() method from Moment.js to determine if two dates are the same on a specific granularity (in this case, 'day'). If they are not the same, the script further checks if date1 is before or after date2.

Syntax:

moment().isSame(moment | string | number | Date | Array, granularity); 

Example: The below example uses isSame Method to Compare Dates with Moment.js.

JavaScript
// script.js

const moment = require('moment');
const date1 = moment('2024-07-20');
const date2 = moment('2024-07-22');

if (date1.isSame(date2, 'day')) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is the same as date2`);
} else if (date1.isBefore(date2, 'day')) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is before date2`);
} else if (date1.isAfter(date2, 'day')) {
    console.log(`Comparing dates:
    date1: ${date1.format('YYYY-MM-DD')}
    date2: ${date2.format('YYYY-MM-DD')}
    
    Result: date1 is after date2`);
}

Output:

Comparing dates:
date1: 2024-07-20
date2: 2024-07-22

Result: date1 is before date2

Next Article

Similar Reads