我希望有一个单一的数字来表示当前日期和时间,就像Unix时间戳一样。
如果是为了记录日志,你可以使用toISOString
new Date().toISOString()
"2019-05-18T20:02:36.694Z"
这似乎有效。
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);
}
};
对于不支持 Date.now 的浏览器,你可以使用以下代码来获取当前日期和时间:
new Date().getTime()
currentTime = Date.now() || +new Date()
我最近从JQuery Cookie的源代码中学到了一种非常酷的将给定的Date对象转换为Unix时间戳的方法。
这是一个示例:
var date = new Date();
var timestamp = +date;
如果想在Node.js中生成一个基本的时间戳,这个方法很有效。
var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );
我们的团队正在使用这个方法来清除本地主机环境中的缓存。输出结果是/dist/css/global.css?v=245521377
,其中245521377
是由hrtime()
生成的时间戳。这个问题有一个解决方案:使用JavaScript将Unix时间戳转换为时间,请尝试以下代码:
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
写下这篇文章时,最佳回答已经有9年了,很多事情自那时以来发生了变化,尤其是我们现在几乎普遍支持一种非hacky的解决方案:
Date.now()
如果你希望绝对确定这不会在一些古老的(ie9之前的)浏览器中出现问题,你可以将其放在一个检查条件之后,如下所示:
如果你想要绝对确保这不会在某些古老的(ie9之前的)浏览器中出现问题,你可以将其放在一个检查条件之后,像这样:
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
这将返回自纪元时间以来的毫秒数,当然不是秒数。
Moment.js可以抽象出很多处理JavaScript日期的烦恼。
参见:http://momentjs.com/docs/#/displaying/unix-timestamp/
moment().unix();
moment().valueOf()
。请参阅我的答案。 - FullStack更简单的方法:
var timeStamp=event.timestamp || new Date().getTime();
event
来自哪里吗?你需要给出更好的解释,而不是直接写答案。拜托了! - alexventuraio
Date.now
实际上存在(并且是一个函数),然后再尝试调用它:currentTime = typeof Date.now === "function" ? Date.now() : +new Date()
。 - mgthomas99