首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在计算两个日期之间的秒数时得到的分钟数

问在计算两个日期之间的秒数时得到的分钟数
EN

Stack Overflow用户
提问于 2014-07-02 18:39:40
回答 2查看 59关注 0票数 0

我在javascript中有一段代码来计算两个日期之间的秒数:

代码语言: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函数,使它每秒钟更新一次,并在屏幕上显示数字:

代码语言:javascript
复制
var j = new Date('July, 05, 2012');
setInterval(function () {
    var n = new Date();
    document.getElementById("a").innerHTML = dateDiffInSeconds(j, n);
}, 1000);

这是很好的工作,这没有问题。

现在,我尝试使用相同的代码来计算这一秒中的每一分钟,所以我想:

每隔60秒,将每分钟的variable数1;

所以我做到了:

代码语言:javascript
复制
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变量

Demo here (check console)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-02 18:53:20

您实际上不需要“数数”分钟变量,您可以使用diff在几秒钟内计算它。如果要检测分钟数增加的时间,只需将新计算的分钟数与上次计算的值进行比较,如果它们不同,则可以采取行动:

代码语言:javascript
复制
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);

http://jsfiddle.net/Y5mew/3/

票数 1
EN

Stack Overflow用户

发布于 2014-07-02 18:46:00

你需要在你的回路里使用一个辅助计数器.

循环的Psuedo代码:

代码语言:javascript
复制
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时增加一分钟来计算分钟数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24538647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档