Format Date and Time with Vanilla JavaScript

bob.ts - Aug 31 '20 - - Dev Community

I've used a variety of tools over the years to manage date and time functionality in JavaScript. Here I am documenting the Vanilla JavaScript patterns for my own use.

See Intl.DateTimeFormat() constructor for reference information beyond what is in this article.

Date.prototype.toLocaleString

There is also a generic method called toLocaleString and it can take all of the options from the toLocaleDateString and toLocaleTimeString methods.

Support

CanIUse Support

const date = new Date();

const options1 = {
  month: 'short'
};

console.log(date.toLocaleString('en-US', options1));
// Aug

const options2 = {
  hour: '2-digit'
};

console.log(date.toLocaleString('en-US', options2));
// 1 PM

const dateOptions = {
  weekday: 'long',
  day: 'numeric',
  month: 'long',
  year: 'numeric'
};
const timeOptions = {
  hour12: true,
  hour: 'numeric',
  minute: '2-digit',
  second: '2-digit',
};

const options3 = {
  ...timeOptions, ... dateOptions
};

console.log(date.toLocaleString('en-US', options3));
// Monday, Aug 10, 2020, 1:44:27 PM
Enter fullscreen mode Exit fullscreen mode

Date.prototype.toLocaleDateString

The method accepts a locale and an optional options parameter where you can pass one or more flags to control the output behavior.

Support

CanIUse Support

const date = new Date();

console.log(date.toLocaleDateString('en-US'));
// 8/10/2020

const dateOptions1 = {
  weekday: 'long',
  day: 'numeric',
  month: 'long',
  year: 'numeric'
};

console.log(date.toLocaleDateString('en-US, dateOptions1);
// Monday, August 10, 2020

const dateOptions2 = {
  day: 'numeric',
  month: 'short'
};

console.log(date.toLocaleDateString('en-US, dateOptions2);
// Aug 10

const dateOptions3 = {
  month: 'long'
};

console.log(date.toLocaleDateString('fr-FR, dateOptions3);
// juillet
Enter fullscreen mode Exit fullscreen mode

Options

  • weekday: 'narrow', 'short', 'long'
  • day: 'numeric', '2-digit'
  • month: 'numeric', '2-digit', 'narrow', 'short', 'long'
  • year: 'numeric', '2-digit'

Date.prototype.toLocaleTimeString

Not only does this method support locale like the previous toLocaleDateString method, but it also supports a timeZone option.

Support

CanIUse Support

const date = new Date();

console.log(date.toLocaleTimeString('en-US'));
// 1:38:27 PM

const timeOptions1 = {
  hour12: true,
  hour: 'numeric',
  minute: '2-digit',
  second: '2-digit',
};

console.log(date.toLocaleTimeString('en-US', timeOptions1));
// 1:38:27 PM

const timeOptions2 = {
    timeZone: 'America/Los_Angeles',
};

console.log(date.toLocaleTimeString('en-US', timeOptions2));
// 10:38:27 AM
Enter fullscreen mode Exit fullscreen mode

Options

  • hour12: true, false
  • hour: 'numeric', '2-digit'
  • minute: 'numeric', '2-digit'
  • second: 'numeric', '2-digit'
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .