我在javascript中有一段代码来计算两个日期之间的秒数:
function dateDiffInSeconds(a, b) {
var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds());
var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate(), b.getHours(), b.getMinutes(), b.getSeconds());
return Math.floor((utc2 - utc1) / 1000);
}我制作了这个小setInterval函数,使它每秒钟更新一次,并在屏幕上显示数字:
var j = new Date('July, 05, 2012');
setInterval(function () {
var n = new Date();
document.getElementById("a").innerHTML = dateDiffInSeconds(j, n);
}, 1000);这是很好的工作,这没有问题。
现在,我尝试使用相同的代码来计算这一秒中的每一分钟,所以我想:
每隔60秒,将每分钟的
variable数1;
所以我做到了:
var j = new Date('July, 05, 2012');
var minutes = 0;
setInterval(function () {
var n = new Date();
document.getElementById("a").innerHTML = dateDiffInSeconds(j, n);
if(dateDiffInSeconds(j, n) > 60) {
minutes++;
console.log(mins);
}
}, 1000);问题
当我运行这个程序时,分钟变量是向上计数的,但只对每一次计数1,而不是每60秒一次。
想要结果
如何使其在用dateDiffInSeconds函数计算的每60秒中,用1来计数minutes变量
发布于 2014-07-02 18:53:20
您实际上不需要“数数”分钟变量,您可以使用diff在几秒钟内计算它。如果要检测分钟数增加的时间,只需将新计算的分钟数与上次计算的值进行比较,如果它们不同,则可以采取行动:
function dateDiffInSeconds(a, b) {
return Math.floor((b.getTime() - a.getTime()) / 1000);
}
var j = new Date('July, 05, 2012');
var oldDiffInMinutes = null;
setInterval(function () {
var n = new Date();
var diffInSeconds = dateDiffInSeconds(j, n);
var diffInMinutes = Math.floor(diffInSeconds/60);
document.getElementById("a").innerHTML = diffInSeconds;
if (diffInMinutes !== oldDiffInMinutes) {
console.log("Minutes changed: " + diffInMinutes);
oldDiffInMinutes = diffInMinutes;
}
}, 1000);发布于 2014-07-02 18:46:00
你需要在你的回路里使用一个辅助计数器.
循环的Psuedo代码:
secs = 1000
minutes = 0
minuteCounter = 0
for (xx=0;xx<secs;xx++){
minuteCounter++
if (minuteCounter==60){
//We've reached one minute
minutes++
minuteCounter=0
}
}这将通过每次计数器达到60时增加一分钟来计算分钟数。
https://stackoverflow.com/questions/24538647
复制相似问题