计算javascript中两个日期之间的秒数

时间:2014-06-30 11:20:17

标签: javascript

我一直在四处寻找如何计算两个特定日期之间的时间:现在的日期,以及我们计算的日期。

我找到了这个片段并根据我的需要编辑了它:

function dateDiffInDays(a, b) {
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), b.getSeconds());
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate(), b.getHours(), b.getMinutes(), b.getSeconds());

    return Math.floor((utc2 - utc1) / 1000);
}

它计算两个日期之间的秒数。

这段代码调用了这个方法:

var j = new Date('July, 05, 2012');
var n = new Date();

setInterval(function () {
    document.getElementById("b").innerHTML = dateDiffInDays(j, n);
}, 1000)

什么是每秒自动更新,我想我用setInterval方法做了什么。为什么这不起作用?

此外,每当我重新运行代码时,它甚至都不会更新数字。

Demo here

3 个答案:

答案 0 :(得分:3)

这是正确的版本:

var j = new Date('July, 05, 2012');
setInterval(function () {
    var n = new Date();
    document.getElementById("b").innerHTML = dateDiffInDays(j, n);
}, 1000);

n从未在您的代码中更新过。

j保持不变,因为它的值是不变的。但我在期刊函数中移动了n,因此它在每个时期都获得了一个新值。


哦,你在这一行上犯了一个错误:

var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), b.getSeconds());

应该是:

var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds());

答案 1 :(得分:2)

因为没有重新创建n,所以你要说的是从你指定的日期开始的秒数,以及创建n变量的日期。使用:

setInterval(function () {
    document.getElementById("b").innerHTML = dateDiffInDays(j, new Date());
}, 1000)

答案 2 :(得分:1)

如果您正在寻找a working fiddle,请查看此信息。

我已经更新了一些代码,因为我知道当你把它们作为函数参数传递时需要在函数内部重新创建日期对象。

setInterval(function () {
    var n = new Date();
    document.getElementById("b").innerHTML = dateDiffInDays(j, n);
}, 1000)

var j = new Date('July, 05, 2012');

// a and b are javascript Date objects then why are you re creating the date objects again?
function dateDiffInDays(a, b) {
    var _MS_PER_DAY = 1000;
    return Math.floor((b.getTime() - a.getTime()) / _MS_PER_DAY);
}