Home Code Tutorials How to manipulate date and time in JavaScript – The Next Web

How to manipulate date and time in JavaScript – The Next Web

15 min read

In principle, dealing with dates as a developer is so simple as creating, storing, and, if vital, manipulating dates. However as a JavaScript developer, you’d know this principle doesn’t maintain lengthy after you begin working with dates for actual. On prime of various date-time codecs, you must take into account timezone and native variations.

Because of this, loads of JavaScript builders search assist from third-party libraries once they should handle dates in an software. Whereas these libraries cut back the duty’s complexity, having a transparent understanding of dealing with vanilla JavaScript dates has its advantages.

This tutorial will introduce you to working with dates in vanilla JavaScript, in addition to helpful third-party libraries that will help you simplify extra complicated date-related duties.

JavaScript Date object

The Date object in JavaScript is the principle ingredient with regards to dealing with date and time. It information a single time limit because the milliseconds’ quantity elapsed for the reason that 1st January 1970 00:00:00 (UTC). This date-time mixture is named the epoch time. So far as JavaScript is worried, it’s the start of time on the planet.

Creating Dates

You may merely create a date utilizing new Date() . You may cross parameters to the Date constructor to create a date of your selection. The given parameter can take completely different varieties.

Go a date string

You may cross a date string of an accepted format when creating a brand new Date object.

const date = new Date (“2020-12-31”);

Now, if we print the created date, it exhibits this.

Thu Dec 31 2020 01:00:00 GMT+0100 (Central European Normal Time)

Along with the date we handed, the date object has extra values, together with a time and a timezone. Since we didn’t give a selected worth for these parameters when creating the article, JavaScript makes use of the native time and timezone of the code’s system.

If we need to cross the time or timezone with the parameter string, we are able to use a format like this.


  • YYYY: yr
  • MM: month (1 to 12)
  • DD: date (1 to 31)
  • HH: hour in 24-hour format (0 to 23)
  • mm: minutes (0 to 59)
  • ss: seconds (00 to 59)
  • sss: milliseconds (0 to 999)
  • T is used to separate the date and time within the string
  • If Z is current, the time is assumed to be in UTC. In any other case, it assumes the native time.

Nevertheless, if T and Z usually are not current, the string’s created date might give completely different leads to completely different browsers. In that case, to all the time have the identical timezone for the date, add +HH:mm or -HH:mm to the tip.

You may get the identical outcomes utilizing the Date.parse perform as a substitute of passing the date string to the Date constructor. Date.parse is not directly being known as contained in the constructor everytime you cross a date string.

The format utilized in these strings is the ISO 8601 calendar prolonged format. You may seek advice from its particulars within the ECMAScript specification .

Go date arguments

You may immediately cross the date arguments to the Date constructor with out utilizing complicated date strings. The order and size of every yr, month, and so forth., are precisely as in a date string.

After we examine the created date’s final result, we are able to discover one essential distinction within the closing date.

What’s bizarre? After we created the date, we used 9 for the month, which we might assume to be September. Nevertheless, once we print the outcome, the month is October as a substitute. Why is that?

JavaScript makes use of a zero-based index to establish every month in a yr. This implies, for JavaScript, January is represented by 0 as a substitute of 1. Equally, October is represented by 9 as a substitute of 10.

On this technique of making a date, we are able to’t cross an argument to point its time zone. So, it’s defaulted to the native time of the system. However we are able to use the Date.UTC perform to transform the date to UTC earlier than passing it to the Date constructor.

Go a timestamp

Keep in mind that I discussed JavaScript shops the time elapsed for the reason that epoch time within the Date object? We are able to cross this elapsed time worth, known as a timestamp, to point the date we’re creating.

Create a Date object for the present date and time

If you wish to create a Date object for the present date and time of the system, use the Date constructor with out passing any argument.

You may also use the Date.now() perform for a similar process.

Formatting dates

JavaScript offers a number of built-in capabilities to format a date. Nevertheless, these capabilities solely convert the date to a format particular to every one.

Let’s see how every formatting perform works.

Internationalization API

ECMAScript Internationalization API permits the formatting of a date into a selected locale utilizing the Intl object.

You may cross an choices object to the DateTimeFormat perform to show time values and customise the output.

Customized date codecs

If you wish to format the date to another format past what these capabilities present, you’ll have to take action by accessing every a part of the date individually and mixing them.

JavaScript offers the next capabilities to retrieve the yr, month, date, and day from a Date object.

Now, you’ll be able to convert the date to a customized format utilizing retrieved elements.

Updating dates

JavaScript offers a number of strategies to edit an already created date.

Evaluating dates

If you wish to know whether or not a selected date comes earlier than one other, you should utilize larger than and fewer than operators immediately for comparability.

It’s because Dates in JavaScript are objects, so every date has a unique occasion of the category, and the == or === operator are evaluating the reminiscence handle as a substitute of the particular values of the dates.

JavaScript date manipulation libraries

We are able to discover a number of JavaScript date and time manipulation libraries as open-source initiatives or in any other case. A few of them, designed for all types of date-time manipulations, and a few have a selected set of use instances. On this part, I’ll solely speak about well-liked multi-purpose libraries.

Second.js was the king of date manipulation libraries amongst JavaScript builders. Nevertheless, its builders lately introduced that it’s specializing in sustaining the present codebase as a substitute of including new options. They advocate searching for another answer for individuals who are engaged on new initiatives.

So, aside from Second.js, what are the libraries we are able to use to make our life simpler as builders?


Date-fns in an open-source library supporting date parsing and formatting, locales, and date arithmetic like addition and subtraction. It’s dubbed as Lodash for dates as a consequence of its versatility.


Luxon is a date-time manipulation library created by one of many Second.js builders to go well with trendy software necessities. Much like Date-fns, Luxon gives information formatting and parsing capabilities. Additionally, it has native Intl help and is chainable.


This tutorial mentioned learn how to work with date and time in JavaScript with and with out exterior libraries. Working with dates is all the time painful in nearly (if not all) programming languages. Luckily for us, JS and its ecosystem of libraries does all of the heavy work for us, permitting us to give attention to constructing options.

This article was initially printed on Dwell Code Stream by Juan Cruz Martinez (twitter: @bajcmartinez), founder and writer of Dwell Code Stream, entrepreneur, developer, writer, speaker, and doer of issues.

Dwell Code Stream can also be accessible as a free weekly e-newsletter. Join updates on every part associated to programming, AI, and laptop science generally.

Learn subsequent:

Swarms of robotic fish might quickly monitor our oceans for environmental hazards

Let’s block adverts! (Why?)

Leave a Reply

Your email address will not be published. Required fields are marked *

Check Also

Join Huawei’s #DoAnything Campaign for a chance to win PHP 50,000

MANILA, Philippines, March 3, 2021 /PRNewswire/ — Huawei Cell Providers (HMS) introd…