如何添加10秒到一个JavaScript日期对象?

就像这样:

var timeObject = new Date()     
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;

当前回答

试试这个方法。

Date.prototype.addSeconds = function(seconds) {
  var copiedDate = new Date(this.getTime());
  return new Date(copiedDate.getTime() + seconds * 1000);
}

只需调用并分配new Date().addSeconds(10)

其他回答

javascript中的Date()对象并不是那么聪明。

如果您只关注添加秒数,似乎可以很顺利地处理事情,但如果您试图添加X秒数,那么将X分钟数和小时数等添加到同一个Date对象中,您最终会遇到麻烦。因此,我只使用setSeconds()方法并将数据转换为秒(这工作得很好)。

如果有人能演示使用所有的set方法向全局Date()对象添加时间,并有最终的时间出来正确,我想看到它,但我有一种感觉,一个set方法是在给定的Date()对象上使用,混合它们会导致混乱。

var vTime = new Date();

var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );

vTime.setSeconds(iSecondsToAdd);

这里有一些文档可能会有所帮助:

只为我们中的表演狂人。

取得时间

var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);

5,196,949 Ops/秒,更快


setSeconds

var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);

2936604次操作/秒,慢43%


moment.js

var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');

每秒22,549次操作,慢了100%


所以这可能是最不适合人类阅读的(不是那么糟糕),但是最快的方式:)

Jspref在线测试

// let timeObject = new Date();
// let milliseconds= 10 * 1000; // 10 seconds = 10000 milliseconds
timeObject = new Date(timeObject.getTime() + milliseconds);

试试这个

a = new Date();
a.setSeconds(a.getSeconds() + 10);

我有几个新的变种

var t = new Date(Date.now() + 10000); var t = new Date(+new Date() + 10000);