Connect with us


How you can manipulate date and time in JavaScript

In principle, dealing with dates as a developer is so simple as creating, storing, and, if mandatory, 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 high of various date-time codecs, it’s important to take into account timezone and native variations.

Because of this, loads of JavaScript builders search assist from third-party libraries once they need to handle dates in an utility. Whereas these libraries scale 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 can assist you simplify extra complicated date-related duties.

JavaScript Date object

The Date object in JavaScript is the principle component on the subject of dealing with date and time. It data 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 called the epoch time. So far as JavaScript is worried, it’s the start of time on the earth.

Creating Dates

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

Cross a date string

You possibly can move 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 reveals this.

Thu Dec 31 2020 01:00:00 GMT+0100 (Central European Commonplace 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 particular worth for these parameters when creating the item, JavaScript makes use of the native time and timezone of the code’s system.

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


  • YYYY: 12 months
  • 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.

Nonetheless, if T and Z should not current, the string’s created date could give completely different leads to completely different browsers. In that case, to at all times have the identical timezone for the date, add +HH:mm or -HH:mm to the top.

You will get the identical outcomes utilizing the Date.parse operate 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 move a date string.

The format utilized in these strings is the ISO 8601 calendar prolonged format. You possibly can discuss with its particulars within the ECMAScript specification .

Cross date arguments

You possibly can straight move the date arguments to the Date constructor with out utilizing complicated date strings. The order and size of every 12 months, month, and many others., are precisely as in a date string.

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

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

JavaScript makes use of a zero-based index to establish every month in a 12 months. 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 move 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 operate to transform the date to UTC earlier than passing it to the Date constructor.

Cross a timestamp

Keep in mind that I discussed JavaScript shops the time elapsed for the reason that epoch time within the Date object? We will move 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 too can use the operate for a similar activity.

Formatting dates

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

Let’s see how every formatting operate works.

Internationalization API

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

You possibly can move an choices object to the DateTimeFormat operate to show time values and customise the output.

Customized date codecs

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

JavaScript offers the next features to retrieve the 12 months, month, date, and day from a Date object.

Now, you may 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 particular date comes earlier than one other, you need to use better than and fewer than operators straight for comparability.

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

JavaScript date manipulation libraries

We will discover a number of JavaScript date and time manipulation libraries as open-source tasks or in any other case. A few of them, designed for all types of date-time manipulations, and a few have a particular set of use circumstances. On this part, I’ll solely discuss fashionable multi-purpose libraries.

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

So, other than 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 result of its versatility.


Luxon is a date-time manipulation library created by one of many Second.js builders to go well with trendy utility necessities. Just like Date-fns, Luxon affords information formatting and parsing features. Additionally, it has native Intl assist and is chainable.


This tutorial mentioned work with date and time in JavaScript with and with out exterior libraries. Working with dates is at all times 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 Reside Code Stream by Juan Cruz Martinez (twitter: @bajcmartinez), founder and writer of Reside Code Stream, entrepreneur, developer, writer, speaker, and doer of issues.

Reside Code Stream can also be accessible as a free weekly publication. Join updates on every thing associated to programming, AI, and laptop science generally.

Learn subsequent:

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

Click to comment

Leave a Reply

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