The UNIX timestamp is an integer that represents the number of seconds elapsed since January 1 1970.
On UNIX-like machines, which include Linux and macOS, you can type date +%s
in the terminal and get the UNIX timestamp back:
$ date +%s
1524379940
The current timestamp can be fetched by calling the now()
method on the Date
object:
Date.now()
You could get the same value by calling
new Date().getTime()
or
new Date().valueOf()
Note: IE8 and below do not have the
now()
method onDate
. Look for a polyfill if you need to support IE8 and below, or usenew Date().getTime()
ifDate.now
is undefined (as that's what a polyfill would do)
The timestamp in JavaScript is expressed in milliseconds.
To get the timestamp expressed in seconds, convert it using:
Math.floor(Date.now() / 1000)
Note: some tutorials use
Math.round()
, but that will approximate to the next second even if the second is not fully completed.
or, less readable:
~~(Date.now() / 1000)
I've seen tutorials using
+new Date
which might seem a weird statement, but it's perfectly correct JavaScript code. The unary operator + automatically calls the valueOf()
method on any object it is assigned to, which returns the timestamp (in milliseconds). The problem with this code is that you instantiate a new Date object that's immediately discarded.
To generate a date from a timestamp, use new Date(<timestamp>)
but make sure you pass a number (a string will get you an "invalid date" result - use parseInt()
in doubt)