How can I get seconds since epoch in Javascript?

后端 未结 10 698
野的像风
野的像风 2020-12-13 23:48

On Unix, I can run date \'+%s\' to get the amount of seconds since epoch. But I need to query that in a browser front-end, not back-end.

Is there a way

相关标签:
10条回答
  • 2020-12-13 23:54

    If you want only seconds as a whole number without the decimals representing milliseconds still attached, use this:

    var seconds = Math.floor(new Date() / 1000);
    
    0 讨论(0)
  • 2020-12-14 00:02

    You can create a Date object (which will have the current time in it) and then call getTime() to get the ms since epoch.

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

    If you want seconds, then divide it by 1000:

    var sec = new Date().getTime() / 1000;
    
    0 讨论(0)
  • 2020-12-14 00:03

    The most simple version:

    Math.floor(Date.now() / 1000) 
    
    0 讨论(0)
  • 2020-12-14 00:05

    The above solutions use instance properties. Another way is to use the class property Date.now:

    var time_in_millis = Date.now();
    var time_in_seconds = time_in_millis / 1000;
    

    If you want time_in_seconds to be an integer you have 2 options:

    a. If you want to be consistent with C style truncation:

    time_in_seconds_int = time_in_seconds >= 0 ?
                          Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);
    

    b. If you want to just have the mathematical definition of integer division to hold, just take the floor. (Python's integer division does this).

    time_in_seconds_int = Math.floor(time_in_seconds);
    
    0 讨论(0)
  • 2020-12-14 00:05

    In chrome you can open the console with F12 and test the following code:

    var date = new Date().getTime()
    console.debug('date: ' + date);
    
    if (Date.now() < date)
        console.debug('ko');
    else
        console.debug('ok');
    

    https://www.eovao.com/en/a/javascript%20date/1/how-to-obtain-current-date-in-milliseconds-by-javascript-(epoch)

    0 讨论(0)
  • 2020-12-14 00:06
    var seconds = new Date() / 1000;
    

    Or, for a less hacky version:

    var d = new Date();
    var seconds = d.getTime() / 1000;
    

    Don't forget to Math.floor() or Math.round() to round to nearest whole number or you might get a very odd decimal that you don't want:

    var d = new Date();
    var seconds = Math.round(d.getTime() / 1000);
    
    0 讨论(0)
提交回复
热议问题