如何获得两个日期之间的月份,日期,小时,分钟和秒的差异?

时间:2020-02-29 09:04:03

标签: javascript datetime date-difference

我正在尝试在JavaScript中的两个日期之间区别月份,日期,小时,分钟和秒。

我知道我们可以得到以毫秒为单位的日期差,并且已经尝试过如下操作:

function showtime() {
    var date1 = new Date('7/14/2010 6:21:00');
    var date2 = new Date('12/15/2010 7:25:10');
    var diffTime = parseInt(date2 - date1);
    var diffMonth = Math.floor(diffTime / (1000 * 60 * 60 * 24 * 30));
    var diffDays = Math.floor((diffTime / (1000 * 60 * 60 * 24)) - (diffMonth * 30));
    var diffHour = Math.floor((diffTime / (1000 * 60 * 60)) - (diffMonth * 30 * 24) - (diffDays * 24))
    var diffMinute = Math.floor((diffTime / (1000 * 60)) - (diffMonth * 60 * 30 * 24) - (diffDays * 60 * 24) - (diffHour * 60))
    var diffSec = Math.floor((diffTime / (1000)) - (diffMonth * 60 * 60 * 30 * 24) - (diffDays * 60 * 60 * 24) - (diffHour * 60 * 60) - (diffMinute * 60))

    var result = (diffMonth + ' Month ' + diffDays + ' Days ' + diffHour + ' Hours ' + diffMinute + ' Minutes ' + diffSec + ' Sec' );

    return result;
}

但是上述函数无法计算确切的日期和月份。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您正在假设所有月份只有30天,而并非如此(diffMonth使用30天乘数)-这会使天数出现偏差

答案 1 :(得分:0)

请尝试输入我的代码:

let duration = Math.abs(date1 - date2) / 36e5;
let totalDuration = Math.round(duration * 10) / 10;

totalDuration = totalDuration.toString().replace('.', 'H : ') + 'M';
// 13H : 2M