在约会中增加10秒

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

就像这样:

var timeObject = new Date()
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
342340 次浏览

还有一个setSeconds方法:

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

对于其他 Date函数的列表,请使用你应该看看MDN


setSeconds将正确处理换行情况:

var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05

timeObject.setSeconds(timeObject.getSeconds() + 10)

试试这个

a = new Date();
a.setSeconds(a.getSeconds() + 10);
// let timeObject = new Date();
// let milliseconds= 10 * 1000; // 10 seconds = 10000 milliseconds
timeObject = new Date(timeObject.getTime() + milliseconds);
const timeObject = new Date();
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);

另请参考: 如何添加30分钟的JavaScript日期对象? < / p >

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);

5196949次/秒,最快


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在线测试

  1. 你可以使用setSeconds方法获取今天的秒数,并在其中添加10秒

    var today = new Date();
    today.setSeconds(today.getSeconds() + 10);
    
  2. You can add 10 *1000 milliseconds to the new date:

    var today = new Date();
    today = new Date(today.getTime() + 1000*10);
    
  3. You can use setTime:

    today.setTime(now.getTime() + 10000)
    

我有几个新的变种

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

试试这个方法。

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

只需调用并赋值new Date().addSeconds(10)

几年前,我写了一个“通用的”日期函数:

function addToDate({time_unit, operator, offset_value }) {
const date = new Date();
operator = operator == "after" ? "+" : "-";
switch (time_unit) {
case "seconds":
date.setSeconds(eval(`${date.getSeconds()} ${operator} ${offset_value}`));
break;


case "hours":
date.setHours(eval(`${date.getHours()} ${operator} ${offset_value}`));
break;


case "minutes":
date.setMinutes(eval(`${date.getMinutes()} ${operator} ${offset_value}`));


break;
case "days":
date.setDate(eval(`${date.getDate()} ${operator} ${offset_value}`));
break;


case "months":
date.setMonth(eval(`${date.getMonth()} ${operator} ${offset_value}`));


break;
case "years":
date.setFullYear(eval(`${date.getFullYear()} ${operator} ${offset_value}`));
break;
default:
break;
}


return date;
}


const new_date = addToDate({time_unit:'seconds','operator':'after','offset_value':10});


console.log(new_date.toISOString());

.setSeconds在node.js下为我揭示了非常奇怪的错误行为,所以我使用:

dateAddSeconds(date, seconds){
return new Date( Date.parse(date) + seconds*1000 );
}

如果你需要在当前时间上增加10秒,你可以使用:

const date = new Date();
date.setUTCSeconds(date.getUTCSeconds() + 10); // Change 10 to any number of seconds