如何在JavaScript中获取时间戳?

4800

我希望有一个单一的数字来表示当前日期和时间,就像Unix时间戳一样。

43个回答

22

如果是为了记录日志,你可以使用toISOString

new Date().toISOString()

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


17

这似乎有效。

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

17

对于不支持 Date.now 的浏览器,你可以使用以下代码来获取当前日期和时间:

new Date().getTime()

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

3
你的代码有问题:它在检查支持性之前执行了Date.now方法。在旧版浏览器中,这将导致“_Date.now不是函数_”错误。 - Salman A
也许更好的选择是使用三元运算符来断言 Date.now 实际上存在(并且是一个函数),然后再尝试调用它:currentTime = typeof Date.now === "function" ? Date.now() : +new Date() - mgthomas99

15

我最近从JQuery Cookie的源代码中学到了一种非常酷的将给定的Date对象转换为Unix时间戳的方法。

这是一个示例:

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

我正要编写新的Date()对象。您可以使用console.log(new Date()),然后浏览新的Date()对象/函数下的相关方法。 - sg28

15

如果想在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中的需求来说,这是最简单的方法。

15

这个问题有一个解决方案:使用JavaScript将Unix时间戳转换为时间,请尝试以下代码:

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

13

对于 lodashunderscore 用户,请使用 _.now

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

12

写下这篇文章时,最佳回答已经有9年了,很多事情自那时以来发生了变化,尤其是我们现在几乎普遍支持一种非hacky的解决方案:

Date.now()
如果你希望绝对确定这不会在一些古老的(ie9之前的)浏览器中出现问题,你可以将其放在一个检查条件之后,如下所示:

如果你想要绝对确保这不会在某些古老的(ie9之前的)浏览器中出现问题,你可以将其放在一个检查条件之后,像这样:

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

这将返回自纪元时间以来的毫秒数,当然不是秒数。

Date.now 的 MDN 文档


11

2
注意,此处给出的是自UNIX纪元以来的秒数(而非毫秒)。如果您需要毫秒数,请使用moment().valueOf()。请参阅我的答案。 - FullStack

10

更简单的方法:

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

你知道event来自哪里吗?你需要给出更好的解释,而不是直接写答案。拜托了! - alexventuraio
我正要编写新的Date()对象。您可以使用console.log(new Date()),然后浏览新的Date()对象/函数下的相关方法。 - sg28

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接