Javascript日期+毫秒

时间:2016-07-03 21:16:25

标签: javascript jquery timer

我正在为我制作的计时器设置一个暂停功能,而且我有点陷入困境。

一旦计时器启动,我就会以毫秒为单位捕获当前日期:

if(!begin){
   begin = Date.now();
}

用户点击暂停后,将以毫秒为单位获取当前日期。

// Pause the timer
function pause(){
   console.log('Begin : ' + begin) //Begin : 1467580324524
   console.log('End: ' + currentDate().getTime()) //End: 1467580329936
   console.log('Difference: ' + parseInt(begin - currentDate().getTime())) //Difference: -5414
   clearInterval(interval);
}

我现在有一个名为difference的变量,它包含开始时间和停止时间之间的毫秒数。

当用户点击“Resume”时,我需要获取当前日期并添加我们得到的毫秒差。然后应该使用新的时间点从他们当前停止的地方恢复计时器。

如何才能将毫秒添加到当前日期以获得新的起点?

我试过这样的事情没有运气:

var mili = 4512;
var newDate = new Date(mili*1000);

更新:这是我的计时器代码的链接,以便您可以看到我正在使用的内容。 https://jsfiddle.net/3dweffy8/3/

我通过清除间隔来让计时器暂停,但我不知道如何继续让计时器恢复此时间。

2 个答案:

答案 0 :(得分:1)

使用Date.now()获取当前时间戳,添加毫秒数并从中创建一个新的Date对象:

var newDate = new Date(Date.now() + mili)

答案 1 :(得分:0)

写一个对象来做簿记。

对象将携带最后一个时间戳和测量值,可以是总和也可以是数组。

它公开了函数start()stop()pause()resume()

start()中的

:重置测量值并将当前日期设为referenceDate,以便进行下一次测量。如果跟踪器已在运行,则不执行任何操作。

stop():计算当前日期与referenceDate之间的差异。计数器不再有效。也许归档剩下的结果。

pause():计算当前日期与referenceDate之间的差异。如果您想测量休息时间,请将referenceDate设置为当前日期。

resume():如果您衡量休息时间,请计算当前日期与referenceDate之间的差异。 无论如何,请将referenceDate设置为当前日期。

用法:

var tracker = new Tracker();

// start 
tracker.start(); 

// Pause the timer
function pause(){
   tracker.pause();

   console.log('Begin : ' + tracker.startOfEvents); //Begin:1467580324524
   console.log('End: ' + tracker.lastMeasurement); //End: 1467580329936
   console.log('Difference: ' + tracker.difference) //Difference: -5414

   // was this part of your measurement?
   clearInterval(interval);
}

// later
tracker.resume();