我正在为我制作的计时器设置一个暂停功能,而且我有点陷入困境。
一旦计时器启动,我就会以毫秒为单位捕获当前日期:
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/
我通过清除间隔来让计时器暂停,但我不知道如何继续让计时器恢复此时间。
答案 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();