Categories
JavaScript Answers

How to Clone a JavaScript Date Object?

Spread the love

Sometimes, we may need to clone a JavaScript date object in our code.

In this article, we’ll look at ways to clone a date object in our JavaScript code.

Date.prototype.getTime and the Date Constructor

We can pass a timestamp constructor to the Date constructor.

So we can get the timestamp from the existing date object and then pass that into the Date constructor.

For instance, we can write:

const date = new Date();  
const copiedDate = new Date(date.getTime());  
console.log(copiedDate)

We call getTime to return the timestamp from the date object.

Then we pass that to the Date constructor to create the new date object.

And copiedDate is a new date object.

Date.prototype.valueOf

We can also get the timestamp with the valueOf method of a date object.

For instance, we can write:

const date = new Date();  
const copiedDate = new Date(date.valueOf());  
console.log(copiedDate)

And we get the same result as the previous example.

The Unary Plus Operator

Another way to get the timestamp from a JavaScript date object is to use the unary plus operator.

For instance, we can write:

const date = new Date();  
const copiedDate = new Date(+date);  
console.log(copiedDate)

And we get the same result as the previous examples.

Pass in the Date Object into the Date Constructor Directly

The Date constructor also accepts a date object directly.

So we can use it to create a clone of our original date object.

For instance, we can write:

const date = new Date();  
const copiedDate = new Date(date);  
console.log(copiedDate)

And we get the same result as before.

Conclusion

There’re several ways we can use th clone a date object in JavaScript.

One way is to get the timestamp with various operators or methods and pass that into the Date constructor.

The other way is to pass in the Date instance itself to the Date constructor to create a new Date instance.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

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