How do you get a timestamp in JavaScript? – Dev

The best answers to the question “How do you get a timestamp in JavaScript?” in the category Dev.


Something similar to Unix’s timestamp, that is a single number that represents the current time and date. Either as a number or a string.


I like this, because it is small:

+new Date

I also like this, because it is just as short and is compatible with modern browsers, and over 500 people voted that it is better:


Short & Snazzy:

+ new Date()

A unary operator like plus triggers the valueOf method in the Date object and it returns the timestamp (without any alteration).


On almost all current browsers you can use to get the UTC timestamp in milliseconds; a notable exception to this is IE8 and earlier (see compatibility table).

You can easily make a shim for this, though:

if (! { = function() { return new Date().getTime(); }

To get the timestamp in seconds, you can use:

Math.floor( / 1000)

Or alternatively you could use: / 1000 | 0

Which should be slightly faster, but also less readable.
(also see this answer or this with further explaination to bitwise operators).

I would recommend using (with compatibility shim). It’s slightly better because it’s shorter & doesn’t create a new Date object. However, if you don’t want a shim & maximum compatibility, you could use the “old” method to get the timestamp in milliseconds:

new Date().getTime()

Which you can then convert to seconds like this:

Math.round(new Date().getTime()/1000)

And you can also use the valueOf method which we showed above:

new Date().valueOf()

Timestamp in Milliseconds

var timeStampInMs = window.performance && && window.performance.timing && window.performance.timing.navigationStart ? + window.performance.timing.navigationStart :;



var time = || function() {
  return +new Date;



JavaScript works with the number of milliseconds since the epoch whereas most other languages work with the seconds. You could work with milliseconds but as soon as you pass a value to say PHP, the PHP native functions will probably fail. So to be sure I always use the seconds, not milliseconds.

This will give you a Unix timestamp (in seconds):

var unix = Math.round(+new Date()/1000);

This will give you the milliseconds since the epoch (not Unix timestamp):

var milliseconds = new Date().getTime();