Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to format date in ReactJS

Understanding Dates in Programming

Before we dive into formatting dates in ReactJS, let's take a moment to understand what a date is in the context of programming. Think of a date as a point in time, similar to how you might schedule an event on a physical calendar. This point in time has a specific year, month, day, hour, minute, and second. In programming, we represent these dates as objects, which are collections of properties (like the year, month, etc.) and methods (which are actions we can take on the date, like formatting it).

The JavaScript Date Object

ReactJS is a JavaScript library, which means we'll be working with JavaScript's built-in Date object to handle dates. JavaScript's Date object comes with its own array of methods for handling and manipulating dates. However, the Date object's default format isn't always the most user-friendly. That's where formatting comes in.

The Need for Formatting Dates

Imagine you're reading a date, and you see this: 2022-04-06T14:30:00.000Z. It's a bit of an eyesore, isn't it? That's the default JavaScript Date format, also known as the ISO 8601 syntax. It's great for computers, but not so great for humans. What we'd like to see is something more like April 6, 2022, 2:30 PM. That's where formatting comes in.

Formatting Dates in Pure JavaScript

First, let's see how to format dates in pure JavaScript. The Date object has a few built-in methods for formatting, like toDateString(), toLocaleDateString(), and toLocaleTimeString(). Here's how you might use them:

let date = new Date();
console.log(date.toDateString()); // e.g., "Wed Apr 06 2022"
console.log(date.toLocaleDateString()); // e.g., "4/6/2022"
console.log(date.toLocaleTimeString()); // e.g., "2:30:00 PM"

These are fine for simple formatting, but what if we want more control over the format?

Introducing Moment.js

Moment.js is a popular JavaScript library for handling dates and times. It's powerful, flexible, and can be used in both the browser and Node.js. To use Moment.js in your ReactJS app, you first need to install it:

npm install moment

Then, you can import it into your ReactJS component:

import moment from 'moment';

With Moment.js, formatting dates is a breeze. You can use the format() method with a variety of tokens to get your date in exactly the format you want. Here's an example:

let date = new Date();
let formattedDate = moment(date).format('MMMM Do YYYY, h:mm:ss a');
console.log(formattedDate); // e.g., "April 6th 2022, 2:30:00 pm"

Using React-Moment for Declarative Formatting

React-Moment is a handy wrapper around Moment.js that allows for more declarative date formatting in your ReactJS components. To use React-Moment, you first need to install it (and Moment.js, if you haven't already):

npm install moment react-moment

Then, you can use the <Moment> component in your JSX:

import Moment from 'react-moment';

function MyComponent() {
  let date = new Date();
  return (
    <div>
      <Moment format="MMMM Do YYYY, h:mm:ss a">{date}</Moment>
    </div>
  );
}

This will render the date in the same format as before, but in a more React-like way.

Conclusion: Embrace the Date

Dates might seem like a small detail in the grand scheme of your application, but they're a crucial part of many user interfaces. Whether it's a blog post timestamp, a calendar event, or a countdown timer, dates are everywhere.

And with the power of JavaScript's Date object, Moment.js, and React-Moment, you have all the tools you need to handle and format dates in ReactJS like a pro. So go forth, and embrace the date!