1 min read

How to format a date as minutes in Javascript

Say we have a Date object representing five minutes:

const fiveMinutes = new Date(0, 0, 0, 0, 5, 0);

How can you format this date to display "5:00"?

The easiest way is using Intl.DateTimeFormat browser API (see docs). This formats the Date as a string, according to a given locale. By passing in the options to only include the minutes and seconds, we can obtain our date:

const formattedDate = Intl.DateTimeFormat("en-US", {
    minute: "numeric",
    second: "numeric",
  }).format(fiveMinutes);

Alternative 1: Date.toLocaleTimeString

Another good option to format the date as time is using Date.toLocaleTimeString (docs). This is equivalent with the option above.

// show full time part
fiveMinutes.toLocaleTimeString();
// show just minutes and seconds
fiveMinutes.toLocaleTimeString(undefined, { minute: "numeric", second: "numeric"})

Alternative 2: Concatenating time parts

Another approach is to extract the parts of the time using Date.getMinutes and Date.getSeconds methods and then concatenating them:

const minutes = fiveMinutes.getMinutes();
const seconds = fiveMinutes.getSeconds();
const paddedSeconds = seconds.toString().padStart(2, "0");
const formattedDate = `${minutes}:${paddedSeconds}`;

The downside of this approach is that it does not take the user locale into account and is error prone - since we are manually stiching things together.

For a broader discussion of formatting options, take a look at https://www.freecodecamp.org/news/how-to-format-dates-in-javascript.

How do you format dates as time? Share your thoughts in the comments below!

Get the React Practice Calendar!

28 days of focused practice of increasing difficulty, going through everything from Fundamentals, Data fetching, Forms and using Intervals in React.

You will also get notified whenever a new challenge is published.