DEV Community

Matt Williams for Tech Dev Blog

Posted on • Originally published at techdevblog.io on

Master JavaScript dates and times with Moment.js: The ultimate guide

Master JavaScript dates and times with Moment.js: The ultimate guide

Are you tired of working with JavaScript's built-in date and time functions and looking for a better way to handle dates and times in your projects? Look no further than Moment.js!

Moment.js is a popular JavaScript library that makes it easy to work with dates and times in JavaScript. With Moment.js, you can parse, validate, manipulate, and display dates and times with ease. It's a must-have tool in any JavaScript developer's toolkit.

In this tutorial, we'll take a look at the top 10 things you need to know to get started with Moment.js and start using it to its full potential in your projects.

Installation

The first thing you need to do to start using Moment.js is to install it in your project. There are a few different ways to do this, depending on how you want to use it.

One option is to download the Moment.js library file and include it in your project using a script tag:

<script src="/path/to/moment.js"></script>
Enter fullscreen mode Exit fullscreen mode

Alternatively, you can use a package manager like npm or Yarn to install Moment.js as a dependency in your project:

npm install moment

yarn add moment
Enter fullscreen mode Exit fullscreen mode

Once you have Moment.js installed, you're ready to start using it in your project.

Parsing dates

One of the most common things you'll need to do with Moment.js is parse dates. This means taking a string representation of a date and time and turning it into a JavaScript Date object that you can work with.

To parse a date with Moment.js, you can use the moment() function and pass it the string representation of the date you want to parse. For example:

const date = moment('2022-01-01');
Enter fullscreen mode Exit fullscreen mode

Displaying dates

Once you have a moment object, you can use it to display the date in any format you like. To display a moment object as a string, you can use the format() method and pass it a string specifying the desired format.

Here are a few examples of using the format() method:

moment().format('MMMM Do YYYY, h:mm:ss a'); // "January 1st 2022, 12:00:00 am"
moment().format('dddd'); // "Monday"
moment().format("MMM Do YY"); // "Jan 1st 22"
moment().format('YYYY [escaped] YYYY'); // "2022 escaped 2022"
moment().format(); // "2022-01-01T00:00:00-05:00"
Enter fullscreen mode Exit fullscreen mode

You can use a variety of tokens to specify the exact format you want. For a full list of available tokens, check out the Moment.js documentation.

Manipulating dates

One of the most powerful features of Moment.js is the ability to easily manipulate dates. You can use the add() and subtract() methods to add or subtract time from a moment object. For example:

moment().add(7, 'days'); // adds 7 days to the current date
moment().subtract(1, 'years'); // subtracts 1 year from the current date
Enter fullscreen mode Exit fullscreen mode

You can also use the startOf() and endOf() methods to set the moment object to the start or end of a specific unit of time. For example:

moment().startOf('day'); // sets the time to 00:00:00 for the current day
Enter fullscreen mode Exit fullscreen mode

Duration

In addition to working with dates and times, Moment.js also includes a duration object that you can use to represent a length of time. To create a duration object, you can use the duration() function and pass it a number of milliseconds.

Here's an example of creating and working with a duration object:

const duration = moment.duration(100000);

duration.asMilliseconds(); // 100000
duration.asSeconds(); // 100
duration.asMinutes(); // 1.6666666666666667
Enter fullscreen mode Exit fullscreen mode

You can also use the add() and subtract() methods to add or subtract time from a duration object.

Query methods

Moment.js includes a variety of query methods that you can use to check the value of a moment object. For example, you can use the isBefore() and isAfter() methods to check if a moment object occurs before or after another moment object:

moment().isBefore('2022-01-02'); // true
moment().isAfter('2022-01-02'); // false
Enter fullscreen mode Exit fullscreen mode

You can also use the isSame() method to check if a moment object occurs at the same time as another moment object:

moment().isSame('2022-01-01'); // true
Enter fullscreen mode Exit fullscreen mode

Localization

One of the great things about Moment.js is that it supports localization, which means that you can use it to display dates and times in different languages and formats. To use localization with Moment.js, you'll need to include the appropriate locale file in your project and use the locale() method to set the locale.

For example, here's how you would set the locale to French:

moment.locale('fr');
Enter fullscreen mode Exit fullscreen mode

With the French locale set, the format() method will automatically display dates and times in the appropriate French format.

Time zones

In addition to localization, Moment.js also supports working with time zones. To work with time zones, you'll need to include the moment-timezone library in your project and use the tz() method to specify the time zone you want to work with.

For example, here's how you would set the time zone to Pacific Standard Time:

moment.tz.setDefault('America/Los_Angeles');
Enter fullscreen mode Exit fullscreen mode

With the time zone set, the format() method will automatically display dates and times in the appropriate time zone.

Plugins

One of the great things about Moment.js is that it has a large and active community of developers who have created a variety of plugins that you can use to extend the functionality of the library.

Best practices

As you start using Moment.js in your projects, there are a few best practices to keep in mind:

  • Always use the same time zone for all dates and times in your application. This will make it easier to work with dates and times and avoid confusion.
  • Use the utc() method to create moment objects that are independent of the local time zone. This can be useful if you're storing dates and times in a database and want to avoid issues with daylight saving time.
  • Use the clone() method to create a copy of a moment object instead of modifying the original object. This will help you avoid unexpected side effects and make your code easier to debug.
  • Don't use Moment.js to perform calculations that can be done natively with JavaScript's built-in date and time functions. For example, use Date.now() instead of moment().valueOf() to get the current timestamp.
  • Consider there may be better alternatives to Moment.js for your project, such as Luxon.

By following these best practices, you'll be able to get the most out of Moment.js and use it effectively in your projects.

Conclusion

In this tutorial, we've covered the top 10 things you need to know to start using Moment.js in your projects. Whether you're working with dates and times, durations, or time zones, Moment.js is a powerful and flexible tool that will make your life as a JavaScript developer easier. So why wait? Start using Moment.js today and see what it can do for you!

Top comments (0)