js毫秒转时间 你如何获得JavaScript的时间戳?




15 Answers

我喜欢这个,因为它很小:

+new Date

我也喜欢这个,因为它与现代浏览器一样短,并且与现代浏览器兼容,超过500人投票表示它更好:

Date.now()
js时间格式化

如何在JavaScript中获取时间戳?

与Unix的时间戳类似的东西,即代表当前时间和日期的单个数字。 无论是数字还是字符串。




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

time();



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



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




除了其他选项,如果你想要一个dateformat ISO,你可以直接得到它

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




Date.getTime()方法可以使用一点调整:

getTime方法返回的值是自1970年1月1日00:00:00 UTC以来的毫秒数。

将结果除以1000以获取Unix时间戳,必要时为floor

(new Date).getTime() / 1000

Date.valueOf()方法在功能上等同于Date.getTime() ,这使得可以在date对象上使用算术运算符来实现相同的结果。 在我看来,这种方法会影响可读性。




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



我强烈推荐使用moment.js 。 要获得自UNIX纪元以来的毫秒数,请执行此操作

moment().valueOf()

要获得自UNIX纪元以来的秒数,请执行此操作

moment().unix()

你也可以像这样转换时间:

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

我一直这样做。 没有双关语。

要在浏览器中使用moment.js

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

有关更多详细信息,包括安装和使用MomentJS的其他方法,请参阅其docs




你只能使用

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

获取当前时间戳。 无需做任何额外的事情。




任何浏览器都不支持Date.now,您可以使用它来获取当前日期时间:

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



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

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

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

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




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

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



今天 - 2018.06.27我提供了纯js解决方案的时间比较。 这对于想要以轻/高效方式获取/测量JS时间的人来说非常有用(例如,对于模拟,游戏等实时应用程序)

在Chrome 67.0.3396.99(64位),Safari 11.0.3(13604.5.6),Firefox 59.0.2(64位)上的MacOs High Sierra 10.13.3上进行了测试。 在下面的屏幕截图中,我展示了最快浏览器(Safari)的结果:

我观察到Date.now()是获取所有三个浏览器的时间戳的最快方法。 Safari每秒运行19.2M,Firefox 16.1M,Chrome 7.8M。

Chrome(2.8M)和Firefox(2.6M)的new Date()*1最慢。 Safari(2.9M)的Number(new Date())最慢。

因此,获胜者JS代码是Date.now() ,最快的浏览器是Safari(比Chrome快2倍!)。

您可以在此处对您的机器进行测试: https://jsperf.com/timestamp-test-xhttps://jsperf.com/timestamp-test-x




在写这篇文章时,最重要的答案是9年,从那以后发生了很多变化 - 尤其是,我们几乎普遍支持非hacky解决方案:

Date.now()

如果你想绝对肯定这不会在一些古老的(pre ie9)浏览器中破坏,你可以把它放在支票后面,如下:

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

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

MDN




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

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



Related