如何计算今天和给定日期之间的天数以及getTime()的代码?

时间:2012-10-20 06:54:52

标签: javascript extjs

我想计算今天到指定日期之间的天数,并检查截至今天剩余的天数或今天过去的天数。

var today = new Date();
var date_to_reply = new Date('2012-10-15');
var timeinmilisec = today.getTime() - date_to_reply.getTime();
console.log( Math.floor(timeinmilisec / (1000 * 60 * 60 * 24)) );

这给了我 5 作为答案,但我应该如何获得( - 5),因为date_to_reply是从今天起的5天过去了?

这是计算任何给定日期的正确方法吗?

此致

4 个答案:

答案 0 :(得分:5)

您正在做的是正确的:您想要计算两个日期之间的差异(以天数为单位)。差异不能小于零。

虽然您的date_to_reply已经过去,但仍有5天的差异。

所以,一切都很好 - 这是正确的方法。

编辑: 如果您想要一个负值作为结果,请尝试:

var today = new Date();
var date_to_reply = new Date('2012-10-15');
var timeinmilisec = date_to_reply.getTime() - today.getTime();
console.log( Math.ceil(timeinmilisec / (1000 * 60 * 60 * 24)) );

请记住,您需要Math.ceil最终结果,而不是使用Math.floor()将其四舍五入。

答案 1 :(得分:1)

如果您希望该值为负值(表示过去为date_to_reply),则应从当前值中减去过去的日期:date_to_reply.getTime() - today.getTime()

检查this link有关计算更多差异化结果的方法。

答案 2 :(得分:1)

如果您更换日期的顺序,您将获得所需的负数。

更好的是,您可以编写一个执行此操作的函数。

它可以从第二个参数中减去第一个参数。

第二个参数可能默认为今天。

function diffDates(dateOne, dateTwo) {
    if (typeof dateTwo === 'undefined') {
        dateTwo = new Date();
    }
    return dateOne.getTime() - dateTwo.getTime();
}

最好让函数对数字而不是日期进行操作。

那会更灵活,但我现在正在iPad上打字!

答案 3 :(得分:0)

很明显因为今天的日期比以前更大了。因此,您需要自己将其设为否定或使用此

var timeinmilisec = date_to_reply.getTime()-today.getTime();