在写这篇文章时,最重要的答案是9年,从那以后发生了很多变化 - 尤其是,我们对非hacky解决方案有着近乎普遍的支持:
Date.now()
如果你想绝对肯定这不会在一些古老的(pre ie9)浏览器中破坏,你可以把它放在支票后面,如下:
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
这将返回自纪元时间以来的毫秒,当然,不是秒。
在MDN上 Date.now上的MDN文档
var time = Date.now || function() { return +new Date; }; time();
一个我还没有看到的
Math.floor(Date.now() / 1000); // current time in seconds
另一个我还没有看到的是
var _ = require('lodash'); // from here https://lodash.com/docs#now _.now();
今天 - 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。
该 new Date()*1 Chrome(2.8M)和Firefox(2.6M)的速度最慢。该 Number(new Date()) Safari的速度最慢(2.9M)。
new Date()*1
Number(new Date())
的 所以赢家JS代码是 Date.now() 最快的浏览器是Safari(比Chrome快2倍!)。 强>
您可以在此处对您的机器进行测试: https://jsperf.com/timestamp-test-x 。
var timestamp = Number(new Date()); // current time as number
对于 lodash 和 下划线 用户,使用 _.now 。
_.now
var timestamp = _.now(); // in milliseconds
有时我需要在xmlhttp调用的对象中,所以我喜欢这样。
timestamp : parseInt(new Date().getTime()/1000, 10)
Moment.js 可以在处理Javascript日期时抽象出很多痛苦。
看到: http://momentjs.com/docs/#/displaying/unix-timestamp/
moment().unix();
JavaScript使用自纪元以来的毫秒数,而大多数其他语言使用秒。您可以使用毫秒,但只要您传递一个值来表示PHP,PHP本机函数可能会失败。所以要确保我总是使用秒,而不是毫秒。
这将为您提供一个Unix时间戳(以秒为单位):
var unix = Math.round(+new Date()/1000);
这将为您提供自纪元以来的毫秒数(不是Unix时间戳):
var milliseconds = new Date().getTime();
+ new Date()
一个一元的运营商喜欢 plus 触发了 valueOf 方法 Date 对象,它返回时间戳(没有任何改动)。
plus
valueOf
Date
的 细节: 强>
几乎所有当前浏览器都可以使用 Date.now() 获取UTC时间戳 的 毫秒 强> ;一个值得注意的例外是IE8及更早版本(参见 兼容性表 )。
不过,你可以轻松地为此做一个垫片:
if (!Date.now) { Date.now = function() { return new Date().getTime(); } }
获取时间戳 的 秒 强> , 您可以使用:
Math.floor(Date.now() / 1000)
或者您也可以使用:
Date.now() / 1000 | 0
哪个应该稍快一点,但也不太可读(也 看到这个答案 )。
我建议使用 Date.now() (兼容垫片)。它稍微好一点,因为它更短和更短没有创造新的 Date 宾语。但是,如果你不想要垫片和垫片。最大兼容性,您可以使用“旧”方法来获取时间戳 的 毫秒 强> :
new Date().getTime()
然后您可以将其转换为秒,如下所示:
Math.round(new Date().getTime()/1000)
你也可以使用 valueOf 上面显示的方法:
new Date().valueOf()
的 时间戳以毫秒为单位 强>
var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now(); console.log(timeStampInMs, Date.now());
我学会了一种非常酷的方法,可以将给定的Date对象从源代码转换为Unix时间戳 JQuery Cookie 另一天。
这是一个例子:
var date = new Date(); var timestamp = +date;
更简单的方法:
var timeStamp=event.timestamp || new Date().getTime();
这是一个生成时间戳的简单函数,格式为:mm / dd / yy hh:mi:ss
function getTimeStamp() { var now = new Date(); return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':' + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now.getSeconds()) : (now.getSeconds()))); }
你只能使用
var timestamp = new Date().getTime(); console.log(timestamp);
获取当前时间戳。无需做任何额外的事情。
对于具有微秒分辨率的时间戳,有 performance.now :
performance.now
function time() { return performance.now() + performance.timing.navigationStart; }
这可以例如屈服 1436140826653.139 ,而 Date.now 只给出 1436140826653 。
1436140826653.139
Date.now
1436140826653
的 日期 强> ,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(); 不起作用,你需要使用:
Date.now();
new Date().getTime();
这个有一个解决方案:在js中将unixtime标记转换为tim尝试这个
var a = new Date(UNIX_timestamp*1000); var hour = a.getUTCHours(); var min = a.getUTCMinutes(); var sec = a.getUTCSeconds();
如果想要一个在Node.js中生成时间戳的基本方法,这很有效。
var time = process.hrtime(); var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );
我们的团队正在使用它来在本地主机环境中破解缓存。输出是 /dist/css/global.css?v=245521377 哪里 245521377 是生成的时间戳 hrtime() 。
/dist/css/global.css?v=245521377
245521377
hrtime()
希望这有帮助,上面的方法也可以工作,但我发现这是我们在Node.js中最简单的方法。
任何浏览器都不支持Date.now,您可以使用它来获取当前日期时间:
currentTime = Date.now() || +new Date()
这似乎有效。
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); } };