我想要一个表示当前日期和时间的数字,比如Unix时间戳。


当前回答

这似乎奏效了。

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

其他回答

时间戳(毫秒)

要获取自Unix纪元以来的毫秒数,请调用Date.now:

Date.now()

或者,使用一元运算符+调用Date.prototype.valueOf:

+ new Date()

或者,直接调用valueOf:

new Date().valueOf()

要支持IE8和更早版本(请参阅兼容性表),请为Date.now创建一个垫片:

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

或者,直接调用getTime:

new Date().getTime()

时间戳(秒)

要获取自Unix纪元以来的秒数,即Unix时间戳:

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

或者,使用逐位或逐层稍快,但可读性也较低,将来可能会中断(参见解释1、2):

Date.now() / 1000 | 0

以毫秒为单位的时间戳(分辨率更高)

使用performance.now:

var isPerformanceSupported=(窗口.性能&&窗口.性能.当前&&窗口.性能.计时&&窗口.性能.计时.导航开始);var timeStampInMs=(是否支持性能?window.performance.now()+窗口.性能.计时.导航开始:日期.now());console.log(timeStampInMs,Date.now());

我还没见过

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

另一个我还没看到的是

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

有时我需要在xmlhttp调用的对象中使用它,所以我喜欢这样做。

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

JavaScript的工作时间是从纪元开始的毫秒数,而大多数其他语言的工作时间都是秒。您可以使用毫秒来工作,但只要您传递一个值来表示PHP,PHP本机函数可能就会失败。所以,为了确保我总是使用秒,而不是毫秒。

这将为您提供Unix时间戳(以秒为单位):

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

这将为您提供自纪元以来的毫秒数(而不是Unix时间戳):

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

如果用于日志记录,则可以使用ISOString

new Date().toISOString()

“2019-05-18T20:02:36.694Z”