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


当前回答

日期,JavaScript中的原生对象是我们获取所有时间数据的方式。

在JavaScript中要小心,时间戳取决于客户端计算机设置,因此它不是100%准确的时间戳。要获得最佳结果,需要从服务器端获取时间戳。

总之,我更喜欢用香草。这是在JavaScript中实现的常见方法:

Date.now(); //return 1495255666921

在MDN中,如下所述:

Date.now()方法返回自1970年1月1日00:00:00 UTC。因为now()是Date的静态方法,所以您总是将其用作Date.now()。

如果您使用的版本低于ES5,Date.now();不起作用,您需要使用:

new Date().getTime();

其他回答

这一个有一个解决方案:在js中将unixtime stamp转换为tim

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

建议的正确方法是Number(new Date()),就代码可读性而言,

此外,UglifyJS和Google闭包编译器将降低已解析代码逻辑树的复杂性(如果您使用其中一个来隐藏/缩小代码)。

对于时间分辨率较低的Unix时间戳,只需将当前数字除以1000,保持整数。

时间戳(毫秒)

要获取自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());

简单来说,这里有一个函数可以在Javascript中返回时间戳字符串。示例:下午15:06:38

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

如果想要一种在Node.js中生成时间戳的基本方法,这很好。

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

我们的团队正在使用此方法在本地主机环境中破坏缓存。输出是/dist/css/global.css?v=245521377,其中245521377是hrtime()生成的时间戳。

希望这会有所帮助,上面的方法也可以工作,但我发现这是Node.js中最简单的方法。