How do you get a timestamp in JavaScript?

JavascriptDatetimeTimestampDate Arithmetic

Javascript Problem Overview


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.

Javascript Solutions


Solution 1 - Javascript

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).

Details:

On almost all current browsers you can use Date.now() 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 (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

To get the timestamp in seconds, you can use:

Math.floor(Date.now() / 1000)

Or alternatively you could use:

Date.now() / 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 Date.now() (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.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());

Solution 2 - Javascript

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:

Date.now()

Solution 3 - Javascript

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();

Solution 4 - Javascript

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

time();

Solution 5 - Javascript

I provide multiple solutions with descriptions in this answer. Feel free to ask questions if anything is unclear


Quick and dirty solution:

Date.now() /1000 |0

> Warning: it might break in 2038 and return negative numbers if you do the |0 magic. Use Math.floor() instead by that time

Math.floor() solution:

Math.floor(Date.now() /1000);

Some nerdy alternative by Derek 朕會功夫 taken from the comments below this answer:

new Date/1e3|0

Polyfill to get Date.now() working:

To get it working in IE you could do this (Polyfill from MDN):

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

If you do not care about the year / day of week / daylight saving time you need to remember this for dates after 2038:

Bitwise operations will cause usage of 32 Bit Integers instead of 64 Bit Floating Point.

You will need to properly use it as:

Math.floor(Date.now() / 1000)

If you just want to know the relative time from the point of when the code was run through first you could use something like this:

const relativeTime = (() => {
    const start = Date.now();
    return () => Date.now() - start;
})();

In case you are using jQuery you could use $.now() as described in jQuery's Docs which makes the polyfill obsolete since $.now() internally does the same thing: (new Date).getTime()

If you are just happy about jQuery's version, consider upvoting this answer since I did not find it myself.


Now a tiny explaination of what |0 does:

By providing |, you tell the interpreter to do a binary OR operation.
Bit operations require absolute numbers which turns the decimal result from Date.now() / 1000 into an integer.

During that conversion, decimals are removed, resulting in a similar result to what using Math.floor() would output.

> Be warned though: it will convert a 64 bit double to a 32 bit integer.
This will result in information loss when dealing with huge numbers.
Timestamps will break after 2038 due to 32 bit integer overflow unless Javascript moves to 64 Bit Integers in Strict Mode.


For further information about Date.now follow this link: Date.now() @ MDN

Solution 6 - Javascript

var timestamp = Number(new Date()); // current time as number

Solution 7 - Javascript

In addition to the other options, if you want a dateformat ISO, you can get it directly

console.log(new Date().toISOString());

Solution 8 - Javascript

jQuery provides its own method to get the timestamp:

var timestamp = $.now();

(besides it just implements (new Date).getTime() expression)

REF: http://api.jquery.com/jQuery.now/

Solution 9 - Javascript

Date, a native object in JavaScript is the way we get all data about time.

Just be careful in JavaScript the timestamp depends on the client computer set, so it's not 100% accurate timestamp. To get the best result, you need to get the timestamp from the server-side.

Anyway, my preferred way is using vanilla. This is a common way of doing it in JavaScript:

Date.now(); //return 1495255666921

In MDN it's mentioned as below:

> The Date.now() method returns the number of milliseconds elapsed since > 1 January 1970 00:00:00 UTC.
> Because now() is a static method of Date, you always use it as Date.now().

If you using a version below ES5, Date.now(); not works and you need to use:

new Date().getTime();

Solution 10 - Javascript

console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch

Solution 11 - Javascript

Performance

Today - 2020.04.23 I perform tests for chosen solutions. I tested on MacOs High Sierra 10.13.6 on Chrome 81.0, Safari 13.1, Firefox 75.0

Conclusions
  • Solution Date.now() (E) is fastest on Chrome and Safari and second fast on Firefox and this is probably best choice for fast cross-browser solution
  • Solution performance.now() (G), what is surprising, is more than 100x faster than other solutions on Firefox but slowest on Chrome
  • Solutions C,D,F are quite slow on all browsers

enter image description here

Details

Results for chrome

enter image description here

You can perform test on your machine HERE

Code used in tests is presented in below snippet

function A() {
  return new Date().getTime();
}

function B() {
  return new Date().valueOf();
}

function C() {
  return +new Date();
}

function D() {
  return new Date()*1;
}

function E() {
  return Date.now();
}

function F() {
  return Number(new Date());
}

function G() {
  // this solution returns time counted from loading the page.
  // (and on Chrome it gives better precission)
  return performance.now(); 
}



// TEST

log = (n,f) => console.log(`${n} : ${f()}`);

log('A',A);
log('B',B);
log('C',C);
log('D',D);
log('E',E);
log('F',F);
log('G',G);

This snippet only presents code used in external benchmark

Solution 12 - Javascript

Just to add up, here's a function to return a timestamp string in Javascript. Example: 15:06:38 PM

function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}

Solution 13 - Javascript

One I haven't seen yet

Math.floor(Date.now() / 1000); // current time in seconds

Another one I haven't seen yet is

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();

Solution 14 - Javascript

The Date.getTime() method can be used with a little tweak:

> The value returned by the getTime method is the number of milliseconds > since 1 January 1970 00:00:00 UTC.

Divide the result by 1000 to get the Unix timestamp, floor if necessary:

(new Date).getTime() / 1000

The Date.valueOf() method is functionally equivalent to Date.getTime(), which makes it possible to use arithmetic operators on date object to achieve identical results. In my opinion, this approach affects readability.

Solution 15 - Javascript

The code Math.floor(new Date().getTime() / 1000) can be shortened to new Date / 1E3 | 0.

Consider to skip direct getTime() invocation and use | 0 as a replacement for Math.floor() function. It's also good to remember 1E3 is a shorter equivalent for 1000 (uppercase E is preferred than lowercase to indicate 1E3 as a constant).

As a result you get the following:

var ts = new Date / 1E3 | 0;

console.log(ts);

Solution 16 - Javascript

I highly recommend using moment.js. To get the number of milliseconds since UNIX epoch, do

moment().valueOf()

To get the number of seconds since UNIX epoch, do

moment().unix()

You can also convert times like so:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

I do that all the time. No pun intended.

To use moment.js in the browser:

<script src="moment.js"></script>
<script>
    moment().valueOf();
</script>

For more details, including other ways of installing and using MomentJS, see their docs

Solution 17 - Javascript

For a timestamp with microsecond resolution, there's performance.now:

function time() { 
  return performance.now() + performance.timing.navigationStart;
}

This could for example yield 1436140826653.139, while Date.now only gives 1436140826653.

Solution 18 - Javascript

Here is a simple function to generate timestamp in the format: mm/dd/yy hh:mi:ss

function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}

Solution 19 - Javascript

You can only use

    var timestamp = new Date().getTime();
    console.log(timestamp);

to get the current timestamp. No need to do anything extra.

Solution 20 - Javascript

// The Current Unix Timestamp
// 1443534720 seconds since Jan 01 1970. (UTC)

// seconds
console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720
console.log(Math.floor(Date.now() / 1000)); // 1443534720
console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720

// milliseconds
console.log(Math.floor(new Date().valueOf())); // 1443534720087
console.log(Math.floor(Date.now())); // 1443534720087
console.log(Math.floor(new Date().getTime())); // 1443534720087

// jQuery
// seconds
console.log(Math.floor($.now() / 1000)); // 1443534720
// milliseconds
console.log($.now()); // 1443534720087

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Solution 21 - Javascript

If it is for logging purposes, you can use ISOString

new Date().toISOString()

> "2019-05-18T20:02:36.694Z"

Solution 22 - Javascript

Any browsers not supported Date.now, you can use this for get current date time:

currentTime = Date.now() || +new Date()

Solution 23 - Javascript

This seems to work.

console.log(clock.now);
// returns 1444356078076

console.log(clock.format(clock.now));
//returns 10/8/2015 21:02:16

console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
//returns 10/8/2015 21:08:18

var clock = {
    now:Date.now(),
    add:function (qty, units) {
            switch(units.toLowerCase()) {
                case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                case 'minutes' :  val = qty * 1000 * 60;  break;
                case 'seconds' :  val = qty * 1000;  break;
                default       :  val = undefined;  break;
                }
            return val;
            },
    format:function (timestamp){
            var date = new Date(timestamp);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hours = date.getHours();
            var minutes = "0" + date.getMinutes();
            var seconds = "0" + date.getSeconds();
            // Will display time in xx/xx/xxxx 00:00:00 format
            return formattedTime = month + '/' + 
                                day + '/' + 
                                year + ' ' + 
                                hours + ':' + 
                                minutes.substr(-2) + 
                                ':' + seconds.substr(-2);
            }
};

Solution 24 - Javascript

This one has a solution : which converts unixtime stamp to tim in js try this

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();

Solution 25 - Javascript

I learned a really cool way of converting a given Date object to a Unix timestamp from the source code of JQuery Cookie the other day.

Here's an example:

var date = new Date();
var timestamp = +date;

Solution 26 - Javascript

If want a basic way to generate a timestamp in Node.js this works well.

var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

Our team is using this to bust cache in a localhost environment. The output is /dist/css/global.css?v=245521377 where 245521377 is the timestamp generated by hrtime().

Hopefully this helps, the methods above can work as well but I found this to be the simplest approach for our needs in Node.js.

Solution 27 - Javascript

For lodash and underscore users, use _.now.

var timestamp = _.now(); // in milliseconds

Solution 28 - Javascript

Moment.js can abstract away a lot of the pain in dealing with Javascript Dates.

See: http://momentjs.com/docs/#/displaying/unix-timestamp/

moment().unix();

Solution 29 - Javascript

As of writing this, the top answer is 9 years old, and a lot has changed since then - not least, we have near universal support for a non-hacky solution:

Date.now()

If you want to be absolutely certain that this won't break in some ancient (pre ie9) browser, you can put it behind a check, like so:

const currentTimestamp = (!Date.now ? +new Date() : Date.now());

This will return the milliseconds since epoch time, of course, not seconds.

[MDN Documentation on Date.now][1]

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now "Date.now on MDN"

Solution 30 - Javascript

more simpler way:

var timeStamp=event.timestamp || new Date().getTime();

Solution 31 - Javascript

sometime I need it in objects for xmlhttp calls, so I do like this.

timestamp : parseInt(new Date().getTime()/1000, 10)

Solution 32 - Javascript

var d = new Date();
console.log(d.valueOf()); 

Solution 33 - Javascript

Get TimeStamp In JavaScript > In JavaScript, a timestamp is the number of milliseconds that have passed since January 1, 1970. > > If you don't intend to support < IE8, you can use

new Date().getTime(); + new Date(); and Date.now();

to directly get the timestamp without having to create a new Date object.

> To return the required timestamp

new Date("11/01/2018").getTime()

Solution 34 - Javascript

The advised, proper way is Number(new Date()), in terms of code- readability,

Also, UglifyJS and Google-Closure-Compiler will lower the complexity of the parsed code-logic-tree (relevant if you are using one of them to obscure/minify your code).

for Unix timestamp, which has a lower time resolution, just divide current number with 1000, keeping the whole.

Solution 35 - Javascript

//if you need 10 digits

alert('timestamp '+ts()); function ts() { return parseInt(Date.now()/1000);

}

Solution 36 - Javascript

var my_timestamp = ~~(Date.now()/1000);

Solution 37 - Javascript

function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}

Solution 38 - Javascript

there are many ways to do it.

 Date.now() 
 new Date().getTime() 
 new Date().valueOf()

> To get the timestamp in seconds, convert it using:

Math.floor(Date.now() / 1000)

Solution 39 - Javascript

Here is another solution to generate a timestamp in JavaScript - including a padding method for single numbers - using day, month, year, hour, minute and seconds in its result (working example at jsfiddle):

var pad = function(int) { return int < 10 ? 0 + int : int; };
var timestamp = new Date();

    timestamp.day = [
        pad(timestamp.getDate()),
        pad(timestamp.getMonth() + 1), // getMonth() returns 0 to 11.
        timestamp.getFullYear()
    ];

    timestamp.time = [
        pad(timestamp.getHours()),
        pad(timestamp.getMinutes()),
        pad(timestamp.getSeconds())
    ];

timestamp.now = parseInt(timestamp.day.join("") + timestamp.time.join(""));
alert(timestamp.now);

Solution 40 - Javascript

> To get time, month, day, year separately this will work

var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();

Solution 41 - Javascript

time = Math.round(((new Date()).getTime()-Date.UTC(1970,0,1))/1000);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpupenoView Question on Stackoverflow
Solution 1 - JavascriptdavebView Answer on Stackoverflow
Solution 2 - Javascriptxer0xView Answer on Stackoverflow
Solution 3 - JavascriptDaithíView Answer on Stackoverflow
Solution 4 - JavascriptStaaleView Answer on Stackoverflow
Solution 5 - JavascriptGottZView Answer on Stackoverflow
Solution 6 - JavascriptaemkeiView Answer on Stackoverflow
Solution 7 - JavascriptJoaquinglezsantosView Answer on Stackoverflow
Solution 8 - JavascriptVisioNView Answer on Stackoverflow
Solution 9 - JavascriptAlirezaView Answer on Stackoverflow
Solution 10 - JavascriptTom VinerView Answer on Stackoverflow
Solution 11 - JavascriptKamil KiełczewskiView Answer on Stackoverflow
Solution 12 - Javascriptlive-loveView Answer on Stackoverflow
Solution 13 - JavascriptBelldanduView Answer on Stackoverflow
Solution 14 - JavascriptSalman AView Answer on Stackoverflow
Solution 15 - JavascriptValentin PodkamennyiView Answer on Stackoverflow
Solution 16 - JavascriptFullStackView Answer on Stackoverflow
Solution 17 - JavascriptiterView Answer on Stackoverflow
Solution 18 - JavascriptdeepakssnView Answer on Stackoverflow
Solution 19 - JavascriptJitendra PawarView Answer on Stackoverflow
Solution 20 - Javascriptblueberry0xffView Answer on Stackoverflow
Solution 21 - JavascriptcenkariozView Answer on Stackoverflow
Solution 22 - JavascriptSBotirovView Answer on Stackoverflow
Solution 23 - JavascriptRonnie RoystonView Answer on Stackoverflow
Solution 24 - JavascriptAnoop P SView Answer on Stackoverflow
Solution 25 - JavascriptgeorgezView Answer on Stackoverflow
Solution 26 - JavascriptKevin LearyView Answer on Stackoverflow
Solution 27 - JavascriptMuhammad RedaView Answer on Stackoverflow
Solution 28 - JavascriptRimianView Answer on Stackoverflow
Solution 29 - JavascriptOlemakView Answer on Stackoverflow
Solution 30 - JavascriptVicky GonsalvesView Answer on Stackoverflow
Solution 31 - JavascriptDevCView Answer on Stackoverflow
Solution 32 - JavascriptjameslouizView Answer on Stackoverflow
Solution 33 - JavascriptAshishView Answer on Stackoverflow
Solution 34 - Javascriptuser257319View Answer on Stackoverflow
Solution 35 - JavascriptdazzafactView Answer on Stackoverflow
Solution 36 - JavascriptEugeneView Answer on Stackoverflow
Solution 37 - Javascriptunknown123View Answer on Stackoverflow
Solution 38 - JavascriptFlash NoobView Answer on Stackoverflow
Solution 39 - JavascriptSaucierView Answer on Stackoverflow
Solution 40 - JavascriptGaneshView Answer on Stackoverflow
Solution 41 - JavascriptKiragazView Answer on Stackoverflow