我想要一个表示当前日期和时间的数字,比如Unix时间戳。
当前回答
如果想要一种在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中最简单的方法。
其他回答
下面是一个生成时间戳的简单函数,格式为: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())));
}
我强烈建议使用moment.js
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的其他方式,请参阅他们的文档
我在这个答案中提供了多种解决方案和描述。如果有任何不清楚的地方,请随时提问
快速和肮脏的解决方案:
Date.now() /1000 |0
警告:如果您使用|0魔法,它可能会在2038年中断并返回负数。此时改用Math.floor()
Math.floor()解决方案:
Math.floor(Date.now() /1000);
德里克的书呆子替代品朕會功夫 摘自以下评论:
new Date/1e3|0
Polyfill以获取Date.now()工作:
要使其在IE中工作,您可以执行以下操作(MDN的Polyfill):
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
如果您不关心年份/星期几/夏时制,您需要记住2038年之后的日期:
按位操作将导致使用32位整数而不是64位浮点。
您需要将其正确使用为:
Math.floor(Date.now() / 1000)
如果您只想知道从代码第一次运行时起的相对时间,可以使用以下内容:
const relativeTime = (() => {
const start = Date.now();
return () => Date.now() - start;
})();
在使用jQuery的情况下,可以使用$.now(),如jQuery的Docs中所述,这会使polyfill过时,因为$.now()在内部执行相同的操作:(newDate).getTime()
如果您对jQuery的版本感到满意,请考虑放弃这个答案,因为我自己没有找到它。
现在对|0的作用做一个小小的解释:
通过提供|,您可以告诉解释器执行二进制OR运算。位操作需要将Date.now()/1000的十进制结果转换为整数的绝对数。
在转换过程中,小数被删除,结果与使用Math.floor()输出的结果类似。
不过,请注意:它会将64位的双精度转换为32位的整数。这将导致处理大量数据时信息丢失。2038年后,由于32位整数溢出,时间戳将中断,除非Javascript在严格模式下移动到64位整数。
有关Date.now的更多信息,请点击以下链接:Date.now()@MDN
有很多方法可以做到这一点。
Date.now()
new Date().getTime()
new Date().valueOf()
要获取以秒为单位的时间戳,请使用以下方法进行转换:
Math.floor(Date.now() / 1000)
任何不支持Date.now的浏览器,您都可以使用它获取当前日期时间:
currentTime = Date.now() || +new Date()