How to convert a String to a Date object in TypeScript

avatar
Borislav Hadzhiev

Last updated: Feb 28, 2024
5 min

banner

# Table of Contents

  1. Convert a String to a Date object in TypeScript
  2. Make sure your Date string is valid
  3. Getting date components from a date string
  4. Getting date and time components from a date-time string
  5. Getting an ISO-formatted date
  6. Convert a String to a Date in TypeScript using date-fns
  7. Convert a String to a Date in TypeScript using moment.js

# Convert a String to a Date object in TypeScript

Use the Date() constructor to convert a string to a Date object in TypeScript.

The Date() constructor takes a valid date string as a parameter and returns a Date object.

index.ts
const str = '2024-07-21'; const date = new Date(str); console.log(date); // ๐Ÿ‘‰๏ธ 2024-07-21T00:00:00.000Z console.log(date.toDateString()); // ๐Ÿ‘‰๏ธ Sun Jul 21 2024

convert string to date object in typescript

The code for this article is available on GitHub

We used the Date() constructor to convert a string to a Date object.

# Make sure your Date string is valid

If you get an invalid Date when creating the Date object, you need to format the string correctly before passing it to the Date() constructor.

index.ts
const str = '07_21_2024'; const date = new Date(str); console.log(date); // ๐Ÿ‘‰๏ธ Invalid Date

make sure your date is valid

If you have difficulties creating a valid Date object, you can pass 2 types of arguments to the Date() constructor:

  1. a valid ISO 8601 string, formatted as YYYY-MM-DDTHH:mm:ss.sssZ, or just YYYY-MM-DD, if you only have a date without time.
  2. multiple, comma-separated parameters that represent the year, month (0 = January to 11 = December), day of the month, hours, minutes and seconds.

# Getting date components from a date string

Here is an example that splits a string formatted as MM/DD/YYYY (could be any other format) and passes the values as parameters to the Date() constructor to create a Date object.

index.ts
const str = '07/21/2024'; const [month, day, year] = str.split('/'); console.log(month); // ๐Ÿ‘‰๏ธ "07" console.log(day); // ๐Ÿ‘‰๏ธ "21" console.log(year); // ๐Ÿ‘‰๏ธ "2024" const date = new Date(+year, +month - 1, +day); console.log(date); // ๐Ÿ‘‰๏ธ 2024-07-20T21:00:00.000Z

getting date components from date string

The code for this article is available on GitHub

We split the string on each forward slash to get the values for the month, day and year.

index.ts
const str = '07/21/2024'; // ๐Ÿ‘‡๏ธ [ '07', '21', '2024' ] console.log(str.split('/'));

We used the unary plus (+) operator to convert the values to numbers.

index.ts
console.log(+'21'); // ๐Ÿ‘‰๏ธ 21 console.log(typeof +'21'); // ๐Ÿ‘‰๏ธ number

Notice that we subtracted 1 from the month when passing it to the Date() constructor.

index.ts
const date = new Date(+year, +month - 1, +day);
This is because, the Date constructor expects a zero-based value, where January = 0, February = 1, March = 2, etc.

# Getting date and time components from a date-time string

Here is another example that creates a Date that also contains the hours, minutes and seconds.

index.ts
const str = '07/21/2024 04:24:37'; const [dateComponents, timeComponents] = str.split(' '); console.log(dateComponents); // ๐Ÿ‘‰๏ธ "07/21/2024" console.log(timeComponents); // ๐Ÿ‘‰๏ธ "04:24:37" const [month, day, year] = dateComponents.split('/'); const [hours, minutes, seconds] = timeComponents.split(':'); const date = new Date(+year, +month - 1, +day, +hours, +minutes, +seconds); // ๐Ÿ‘‡๏ธ Sun Jul 21 2024 04:24:37 console.log(date);
The code for this article is available on GitHub

We first split the date and time string on the space, so we can get the date and time components as separate strings.

We then had to split the date string on each forward slash / to get the value for the month, day and year. Note that your separator might be different, e.g. a hyphen, but the approach is the same.

We also split the time string on each colon : and assigned the hours, minutes and seconds to variables.

We passed all of the parameters to the Date() constructor to create a Date object.

If you need to store a date string in your database, it's best to store the ISO 8601 representation of the date.

# Getting an ISO-formatted date

You can get the ISO formatted date by calling the toISOString() method.

index.ts
const str = '07/21/2024 04:24:37'; const [dateComponents, timeComponents] = str.split(' '); console.log(dateComponents); // ๐Ÿ‘‰๏ธ "07/21/2024" console.log(timeComponents); // ๐Ÿ‘‰๏ธ "04:24:37" const [month, day, year] = dateComponents.split('/'); const [hours, minutes, seconds] = timeComponents.split(':'); const date = new Date(+year, +month - 1, +day, +hours, +minutes, +seconds); // ๐Ÿ‘‡๏ธ Sun Jul 21 2024 04:24:37 console.log(date); // ๐Ÿ‘‡๏ธ "2024-07-21T01:24:37.000Z" console.log(date.toISOString());
The code for this article is available on GitHub

The toISOString method returns a string of the date in the ISO 8601 format according to universal time.

The ISO string can easily be passed to the Date() constructor to create a new Date object.

Want to learn more about working with Dates in TypeScript? Check out these resources: How to format Date/Time in TypeScript,How to type a Date object in TypeScript,How to get the current Date and Time in TypeScript.

# Convert a String to a Date in TypeScript using date-fns

You can also use the date-fns module to convert a string to a Date in TypeScript.

First, make sure you have the module installed by running the following command from the root directory of your project.

shell
# ๐Ÿ‘‡๏ธ with NPM npm install date-fns # ๐Ÿ‘‡๏ธ with YARN yarn add date-fns

Now you can import and use the parse() function from the date-fns module.

index.js
import { parse } from 'date-fns'; const str = '09-24-2024 09:44:21'; const date = parse(str, 'MM-dd-yyyy hh:mm:ss', new Date()); console.log(date); // ๐Ÿ‘‰๏ธ 2024-09-24T06:44:21.000Z

convert string to date in typescript using date fns

The code sample assumes that you have a Date string formatted as MM-DD-YYYY hh:mm:ss.

The parse function takes a date or date and time string and converts the string to a Date object.

You can view the accepted format string patterns in this table in the docs.

# Convert a String to a Date in TypeScript using moment.js

You can also use the moment package to convert a string to a date in TypeScript.

First, make sure you have the module installed by running the following command from the root directory of your project.

shell
# ๐Ÿ‘‡๏ธ with NPM npm install moment # ๐Ÿ‘‡๏ธ with YARN yarn add moment

Now you can import and use the moment module to convert a string to a date object.

index.js
import moment from 'moment'; const str = '09-24-2024 09:44:21'; const date = moment(str, 'MM-DD-YYYY hh:mm:ss').toDate(); console.log(date); // ๐Ÿ‘‰๏ธ 2024-09-24T06:44:21.000Z

convert string to date in typescript using moment js

The code for this article is available on GitHub

Notice that I used the toDate() method to convert the moment object to a JavaScript date.

You can remove the call if you'd rather keep it as a moment object.

Note that the moment module should generally only be used when your project already relies on it.

In general, it's better to use the more modern date-fns package because it is much faster.

# Additional Resources

You can learn more about the related topics by checking out the following tutorials:

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.

Copyright ยฉ 2024 Borislav Hadzhiev