我想要一个表示当前日期和时间的数字,比如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();
其他回答
console.log(newDate().valueOf());//返回自epoch以来的毫秒数
JavaScript的工作时间是从纪元开始的毫秒数,而大多数其他语言的工作时间都是秒。您可以使用毫秒来工作,但只要您传递一个值来表示PHP,PHP本机函数可能就会失败。所以,为了确保我总是使用秒,而不是毫秒。
这将为您提供Unix时间戳(以秒为单位):
var unix = Math.round(+new Date()/1000);
这将为您提供自纪元以来的毫秒数(而不是Unix时间戳):
var milliseconds = new Date().getTime();
Moment.js可以消除处理Javascript Dates时的许多痛苦。
参见:http://momentjs.com/docs/#/displaying/unix-时间戳/
moment().unix();
任何不支持Date.now的浏览器,您都可以使用它获取当前日期时间:
currentTime = Date.now() || +new Date()
时间戳(毫秒)
要获取自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());
推荐文章
- 为时刻添加持续时间(moment.js)
- 如何减去X天从一个日期对象在Java?
- 如何在JavaScript中获得时区名称?
- 在JSON键名中哪些字符是有效的/无效的?
- jQuery中的live()转换为on()
- 如何区分鼠标的“点击”和“拖动”
- IE9是否支持console.log,它是一个真实的功能吗?
- Node.js同步执行系统命令
- 如何转义JSON字符串包含换行字符使用JavaScript?
- jQuery等价于JavaScript的addEventListener方法
- jQuery需要避免的陷阱
- 如何在Python中从毫秒创建datetime ?
- JavaScript中变量字符串的XML解析
- 'React'指的是一个UMD全局,但当前文件是一个模块
- 为什么useState不触发重新渲染?