向Javascript日期对象timeObject添加10秒

geo*_*rge 225 javascript time

如何为javascript日期对象timeObject添加10秒.我认为这样的事情......

var timeObject = new Date()     
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
Run Code Online (Sandbox Code Playgroud)

zzz*_*Bov 376

还有一种setSeconds方法:

var t = new Date();
t.setSeconds(t.getSeconds() + 10);
Run Code Online (Sandbox Code Playgroud)

有关其他 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
Run Code Online (Sandbox Code Playgroud)

  • 依赖未记录的行为(setSeconds(70) 将分钟增加一并将秒设置为 10)似乎是一种普遍的不好做法。指向 Date.getTime() + <number of milliseconds to add> 的(当前下一个)答案似乎是预期和支持的方法,并且对于来自不同语言的大多数程序员来说很清楚,而没有对每个未记录的细微差别的百科全书知识特定的 JavaScript 引擎。 (5认同)
  • 请注意,我的Nodejs安装将d.getSeconds()作为字符串返回.我必须将其更改为(+ d.getSeconds())一元加号将字符串转换为数字.也许更明显的是1*d.getSeconds() (2认同)
  • 尝试做`d.setSeconds(d.getSeconds() - 92);`你最终会得到2'32"差异,而不是1'32".使用`new Date(d.getTime() - 92*1000)的解决方案;`然而有效! (2认同)

4es*_*n0k 97

// var timeObject = new Date();

new Date(timeObject.getTime() + 10000);
Run Code Online (Sandbox Code Playgroud)

  • ...以及添加10000的原因是因为Javascript日期以毫秒为单位工作,即10000 = 10*1000 (30认同)
  • 快速有点明显的提示:如果您要向当前日期添加秒数,则可以使用“Date.now()”稍微缩短代码。示例:`const timeObject = new Date(Date.now() + 毫秒);` (3认同)

Ron*_*Ron 55

var timeObject = new Date(); 
timeObject = new Date(timeObject .getTime() + 1000*10);
console.log(timeObject);
Run Code Online (Sandbox Code Playgroud)

另请参阅: 如何将30分钟添加到JavaScript Date对象?

  • 在这里所有错误的答案,这是正确的. (7认同)
  • 任何人都可以解释所选答案(目前来自@zzzzBov)做错了什么?这个对我有用. (2认同)

Dan*_*npe 54

只是为了我们中间的表现狂.

的getTime

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

5,196,949 Ops/sec,最快


调用setSeconds

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

2,936,604 Ops/sec,慢43%


moment.js

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

22,549 Ops/sec,慢100%


所以也许它是最不可读的(不是那么糟糕)但是最快的方式:)

jspref在线测试

  • 谢谢你的细节,非常有用:) (2认同)

los*_*yzd 9

试试这个

a = new Date();
a.setSeconds(a.getSeconds() + 10);
Run Code Online (Sandbox Code Playgroud)


1ns*_*nct 5

我有几个新的变体

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