XMehdi01
XMehdi01

Reputation: 1

Difference between converting date into string with toISOString() and JSON.stringify()

I researched about converting date into string in ISO format, and I found two methods to do that giving me the same result '2022-07-29T06:46:54.085Z':

  1. (new Date()).toISOString()
  2. JSON.parse(JSON.stringify(new Date()))

Question:

Upvotes: 3

Views: 845

Answers (3)

RobG
RobG

Reputation: 147413

If an object passed to JSON.stringify has a toJSON method, then it's used to set the value within the JSON text (see SerializeJSONProperty step 2.b).

Date instances have a toJSON method that is defined as returning the same value as Date.prototype.toISOString.

I.e.

date.toJSON() === date.toISOString()

by design.

Upvotes: 0

Bergi
Bergi

Reputation: 664548

JSON.parse(JSON.stringify(new Date())) is just the same as new Date().toJSON(). And in the docs for that method we can see

Calling toJSON() returns a string (using toISOString()) representing the Date object's value.

So they're having exactly the same result, calling toISOString() directly is just much more straightforward.

Upvotes: 2

Alex Strizhak
Alex Strizhak

Reputation: 990

First of all: less code, easier to maintain

So, new Date().toISOString() is simplest way to return string in ISO format.

Regarding question:

No. The output is the same, because of JSON.stringify logic underneath that returns:

JSON.stringify(new Date())
'"2022-07-29T18:58:14.411Z"'

Because:

The instances of Date implement the toJSON() function by returning a string (the same as date.toISOString()). Thus, they are treated as strings.

Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

(new Date).toJSON()
'2022-07-29T18:58:14.411Z'

Upvotes: 3

Related Questions