如何在JavaScript中的两个日期计算出日,月和年的差异?

时间:2016-03-22 20:31:24

标签: javascript date datetime time

有人可以解释毫秒的工作原理和一些文档。在给定两个日期的情况下,我正在努力解决两个日期之间的年,日和months差异。理想情况下,我想要舍入数字,所以没有小数。这在没有任何库的JavaScript中是否可行?

到目前为止,这是我的代码。我尝试过1000 * 60 / 365和一些组合,但我不知道那些代表什么 - 我也可以尝试一下。

        var date1 = new Date(a); // 01/03/2008
        var date2 = new Date(b); // 22/03/2016
        var timeDiff = Math.abs(date2.getTime() - date1.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
        var diffMonths = Math.ceil(timeDiff / (12)); 
        var diffYears = Math.ceil(timeDiff / (365)); 
        console.log(diffDays);
        console.log(diffMonths);
        console.log(diffYears);

我设法解决了天差,但我仍然不完全理解。

1 个答案:

答案 0 :(得分:2)

由于语言处理日期时间的方式,使用普通JavaScript这是一个困难的想法。您最好的解决方案是使用MomentJS库。它非常时尚,文档齐全且易于使用。

MomentJS

更新

我正在为来自Moment.JS的未来人们使用这样的解决方案

var bornDate = moment([1990, 2, 12]); // get YYYY MM DD from datepicker etc
var userChoiceDate = moment([2016, 3, 22]);
var diffYears = bornDate.diff(userChoiceDate, 'years');
var diffDays = bornDate.diff(userChoiceDate, 'days');
console.log(diffYears);
console.log(diffDays);