2

我想在网页内部做一些事情(目前只是通过写入来测试console.log) 。setInterval当间隔循环时,我想传入间隔的前一个值。我目前正在尝试执行以下操作:

setInterval(function() {
    var lastTime, shiftTime = new Date();
    var myTimeString;
    var lastTimeString;
    myTimeString =  ('00' + (shiftTime.getHours())).slice(-2) +":"+('00' + (shiftTime.getMinutes())).slice(-2) + ":"+ ('00' + (shiftTime.getSeconds())).slice(-2) + "."+ ('000' + (shiftTime.getMilliseconds())).slice(-3);
    newInterval = myTimeString;
    lastTime  = lastTime - 300000;
    lastTimeString =  ('00' + (lastTime.getHours())).slice(-2) +":"+('00' + (lastTime.getMinutes())).slice(-2) + ":"+ ('00' + (lastTime.getSeconds())).slice(-2) + "."+ ('000' + (lastTime.getMilliseconds())).slice(-3);
    lastInterval = lastTimeString;
    console.log("lastInterval = " + lastInterval + "   thisInterval = " + newInterval);
    }, 300000);

上面目前是这么说的lastTime.getHours() is not a function

你如何从setInterval函数中获得最后一个间隔值(我最终需要日期和时间)?

有没有比我接近它更好的方法来做到这一点?

谢谢!

4

2 回答 2

4

首先,一定要初始化 lastTime :

var lastTime = new Date(), shiftTime = new Date();

然后改变

lastTime  = lastTime - 300000;

lastTime  = new Date(lastTime - 300000);

这样您就可以Date在删除300000ms 后获得一个对象。

于 2013-06-12T17:21:19.627 回答
4

您需要在区间之间永久存在的任何变量都应该在区间函数之外声明,这样它们就不会被范围杀死。例如

var valueToKeep;
setInterval(function(){
      var tempValue;
      // do something
      valueTokeep - tempValue;
}, 1000);

@dystroy 是正确的;如果要使用日期方法,最好构建一个日期对象:

var foo = 123456;
var bar = new Date(ms), // gives you date object
    baz = foo - 86400; // just gives you a number
于 2013-06-12T17:22:33.020 回答