In this article you will learn how to use moment.js to enhance datetime handling in JS. With many projects, dealing with datetime is inevitable. In particular, some specific projects about datetime such as booking, calendar, … require to thoroughly apply and improve the knowledge, how to calculate, and parse that the programming language provides. Moment.js is a powerful library that supports these complex tasks in JS.
Install the library
The moment.js library is supported in many browsers. In JS you can install the library with the following npm command:
npm install moment
Using moment.js to enhance datetime handling in JS
Create a moment object with a specific date and time
For a specific date and time, you can create a datetime object like this:
1. In the format “String”
const date = moment(“2022-11-25”) // Create a moment object in the format YYYY-MM-DD
const dateTime = moment(“2022-11-25 08:20:25”) // Create moment object with format YYYY-MM-DD HH:mm:ss
You can format the Datetime in many different ways. However, in some browsers when the string is not valid, the above way of creating moment will no longer be correct and will return an error result.
So you can also perform the conversion in the ways below to increase the accuracy.
2. Convert to “String + format”
Once you know exactly what the datetime value is, you can use the string format for parsing.
moment(“November 25, 2022”, “MM-DD-YYYY”);
moment(“November 25, 2022 08:30:15”, “YYYY-MM-DD HH:mm:ss”);
3. Convert to a Date object
Use moment to generate a string value to Date as follows:
const day = new Date(2022, 11, 25);
const dayWrapper = moment(day);
Note: dayWrapper is cloned from Date object, changes on these two objects are independent and do not affect each other.
4. Convert from array
moment([2022, 11, 25, 14, 35, 50, 125]);
// Create time object with parameters [year, month, day, hour, minute, second, millisecond]
Note: month has value from 0 – 11
Check date format
You can use .isValid() to check if the value of Dates is correct.
Calculate time from past, future (to date)
The .fromNow() method is used to retrieve a string indicating the provided time relative to the current time.
// today: 2022-11-25
// “4 years ago”
// “6 hours ago”
// “print 1 month”
In addition, in case you set True for fromNow(), the reference system will point to the calculation result regardless of the past or the future.
// “4 years”
// “6 days”
// “1 month”