newsletter

Working with Dates in JavaScript

4 min read

This post will guide you through the essentials of handling dates in JavaScript, using the built-in Date object. We'll explore creating dates, formatting them, performing date calculations, comparing dates and handling time zone conversions.

Copied

How To Create Date In JavaScript

You can create a date in JavaScript using the Date constructor. You can create a date object using different formats:

js
// Current date and time const now = new Date(); console.log(now); // Specific date and time (YYYY, MM, DD, HH, MM, SS, MS) const specificDate = new Date(2024, 6, 15, 10, 30, 0, 0); console.log(specificDate); // From timestamp (epoch timestamp, milliseconds since January 1, 1970) const timestampDate = new Date(1718477533698); console.log(timestampDate); // From date string (ISO format) const stringDate = new Date("2024-06-15T10:30:00Z"); console.log(stringDate);
Copied

How To Get Parts of Date

JavaScript provides methods to get individual components of a date, such as seconds, minutes, hours, days, etc.

These methods allow you to extract specific parts of a date object:

js
const date = new Date("2024-06-15T10:20:30Z"); // Getting Year const year = date.getFullYear(); console.log(year); // 2024 // Getting Month (0-11, where 0 is January and 11 is December) const month = date.getMonth(); console.log(month); // 5 (June) // Getting Date of the Month (1-31) const dayOfMonth = date.getDate(); console.log(dayOfMonth); // 15 // Getting Day of the Week (0-6, where 0 is Sunday and 6 is Saturday) const dayOfWeek = date.getDay(); console.log(dayOfWeek); // 6 (Saturday) // Getting Hours (0-23) const hours = date.getHours(); console.log(hours); // 10 // Getting Minutes (0-59) const minutes = date.getMinutes(); console.log(minutes); // 20 // Getting Seconds (0-59) const seconds = date.getSeconds(); console.log(seconds); // 30 // Getting Milliseconds (0-999) const milliseconds = date.getMilliseconds(); console.log(milliseconds); // 0 // Getting UTC Hours const utcHours = date.getUTCHours(); console.log(utcHours); // 10
Copied

How To Format Dates

JavaScript provides methods to format dates in a human-readable way.

Here are some commonly used methods:

  • toDateString - converts the date portion of a Date object to a string
  • toTimeString - converts the time portion of a Date object to a string
  • toLocaleDateString - converts the date to a string using locale conventions
  • toLocaleTimeString - converts the time to a string using locale conventions
  • toISOString - converts the date to an ISO 8601 string

Now let's explore these methods in action:

js
const date = new Date(); // e.g., "Sat Jun 15 2024" console.log(date.toDateString()); // e.g., "10:33:30 GMT+0300 (Eastern European Summer Time)" console.log(date.toTimeString()); // e.g., "6/15/2024" console.log(date.toLocaleDateString("en-US")); // e.g., "10:33:30 AM" console.log(date.toLocaleTimeString("en-US")); // e.g., "2024-06-15T07:33:30.000Z" console.log(date.toISOString());
Copied

Calculations between Date Objects

JavaScript allows you to add or subtract time units from dates.

You can add seconds, minutes, hours, days, months, years. For example:

js
const today = new Date(); // Adding minutes const newDate = new Date(today); newDate.setMinutes(newDate.getMinutes() + 10); console.log(newDate); // Adding days const tomorrow = new Date(today); tomorrow.setDate(tomorrow.getDate() + 1); console.log(tomorrow); // Adding months const nextMonth = new Date(today); nextMonth.setMonth(nextMonth.getMonth() + 1); console.log(nextMonth);

Here is how you can subtract date units:

js
const today = new Date(); // Subtracting minutes const newDate = new Date(today); newDate.setMinutes(newDate.getMinutes() - 10); console.log(newDate); // Subtracting days const yesterday = new Date(today); yesterday.setDate(today.getDate() - 1); console.log(yesterday); // Subtracting years const lastYear = new Date(today); lastYear.setFullYear(today.getFullYear() - 1); console.log(lastYear);

To add or subtract dates, you need to deal with the time values in milliseconds, since JavaScript Date objects don't directly support arithmetic operations.

To add a specific time interval to a date, convert the interval to milliseconds and add it to the date's time value:

js
const date = new Date("2024-06-15T10:00:00Z"); const daysToAdd = 5; // Adding days const resultDate = new Date(date.getTime() + (daysToAdd * 24 * 60 * 60 * 1000)); console.log(resultDate);

To subtract a time interval from a date, convert the interval to milliseconds and subtract it from the date's time value:

js
const date = new Date("2024-06-15T10:00:00Z"); const daysToSubtract = 3; // Subtracting days const resultDate = new Date(date.getTime() - (daysToSubtract * 24 * 60 * 60 * 1000)); console.log(resultDate);
Copied

How To Compare Dates in JavaScript

JavaScript allows you to compare dates using comparison operators. Since dates are essentially numbers (milliseconds since January 1, 1970), you can directly compare them:

js
const date1 = new Date("2024-06-15T10:00:00Z"); const date2 = new Date("2024-06-16T10:00:00Z"); console.log(date1 > date2); // false console.log(date1 < date2); // true // false (compares exact time) console.log(date1.getTime() === date2.getTime());

To find the difference between two dates, subtract one date from the other. This gives you the difference in milliseconds, which can then be converted to other units:

js
const date1 = new Date("2024-06-15T10:00:00Z"); const date2 = new Date("2024-06-20T10:00:00Z"); const diffInMilliseconds = date2 - date1; const diffInDays = diffInMilliseconds / (24 * 60 * 60 * 1000); console.log(diffInDays); // 5
Copied

How To Use Date Static Methods

Date class provides several useful static methods for handling dates and times. Let's explore them:

Date.now() - returns the number of milliseconds elapsed since January 1, 1970, 00:00:00 UTC (the Unix Epoch). This method is useful for measuring time intervals and for generating timestamps.

js
const milliseconds = Date.now(); console.log(milliseconds); // e.g., 1718477533698

Date.parse() - parses a date string and returns the number of milliseconds, equivalent to the date and time described by the string. This method is helpful for converting date strings into a format that can be used to create Date objects or perform date calculations.

js
const timestamp = Date.parse("2024-06-15T10:00:00Z"); console.log(timestamp);

Date.UTC() - accepts date components (year, month, day, hours, minutes, seconds, milliseconds) and returns the number of milliseconds in UTC for the given date and time. This method is useful for creating Date objects in UTC, especially when dealing with time zone differences.

js
// Note: months are 0-based (0 = January, 11 = December) const timestamp = Date.UTC(2024, 5, 15, 10, 0, 0); console.log(timestamp);
Copied

How To Handle Time Zones Conversions

JavaScript's Date object operates in the local time zone of the user's system. To handle different time zones, you can use UTC methods:

js
const date = new Date(); // Getting UTC date and time console.log(date.getUTCDate()); console.log(date.getUTCHours()); // Setting UTC date and time const utcDate = new Date(); utcDate.setUTCFullYear(2024); utcDate.setUTCMonth(6); utcDate.setUTCDate(15); console.log(utcDate.toISOString());

Dealing with UTC time is particularly useful when fetching data from the server. Often server stores dates in UTC and frontend is responsible to transform it to the user's local time.

Let's explore such an example with a real API that returns datetime info:

js
async function fetchUtcTimeAsync() { try { const response = await fetch("https://worldtimeapi.org/api/timezone/Europe/London"); const data = await response.json(); return data.utc_datetime; } catch (error) { console.error("Error fetching UTC time for London:", error); } } const utcDateTimeString = await fetchUtcTimeAsync(); const utcDate = new Date(utcDateTimeString);

After fetching the utc datetime string, we can use it to create a Date object.

To convert it to the local time, we can use the getTime function and create a new Date object:

js
const localDate = new Date(utcDate.getTime()); console.log("UTC Date and Time:", utcDate.toISOString()); console.log("Local Date and Time:", localDate.toString());
Copied

Summary

Today we explored how to:

  • create dates
  • extract part of dates
  • format dates
  • perform date calculations and comparison
  • how to use Date static methods
  • and how to handle time zones

Now you're fully equipped with information on how to work with Dates in JavaScript, so you can efficiently manage dates and times in your applications.

Hope you find this newsletter useful. See you next time.

Whenever you're ready, here's how I can help you:

The .NET Senior Playbook is built to:

  • Fast-track you from junior or mid-level to senior
  • Keep you growing as a senior
  • Help you beat any .NET interview

Covers everything: C#, ASP.NET Core, EF Core, system design — answer each question first, reveal the solution, and a test after every chapter proves it stuck. Finish, and you earn a verifiable certificate for your LinkedIn.

The .NET Senior Playbook
View the Playbook

Not sure where you stand? Take the free .NET Interview Run:

  • Find out your real level — Junior to Senior+
  • A realistic mock .NET interview — across 13 areas of C#, .NET, ASP.NET Core and System Design

No credit card required. When you finish, you get a personalized report: your level, your strongest and weakest areas, and where to focus next — the perfect way to benchmark yourself before diving into the Playbook.

Start your free run

Enjoyed this article? Share it with your network

Improve Your .NET and Architecture Skills

Join my community of 25,000+ developers and architects.

Each week you will get 1 practical tip with best practices and real-world examples.

Learn how to craft better software with source code available for my newsletter.

Join 25,000+ developers already reading
No spam. Unsubscribe any time.