【问题标题】:How to get a difference in Month, Date, Hour, Minute and Sec between two dates?如何获得两个日期之间的月、日、时、分和秒的差异?
【发布时间】:2020-06-13 06:07:37
【问题描述】:

我试图在 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;
}

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

【问题讨论】:

标签: javascript datetime date-difference


【解决方案1】:

您假设所有月份只有 30 天,而事实并非如此(diffMonth 使用 30 天乘数) - 这会扭曲天数

【讨论】:

  • 是的,这只是给出这个问题的原因。
  • 问题并不清楚需要什么,因此我指出了为什么天数可能会出现偏差。但是,计算 No.Of Months w/ No.Of Days 取决于很多不同的情况,即如果它是闰年,这个月是 30 天还是 31 天。我认为检查这些问题可以帮助您,看看您是否可以以此为基础 - stackoverflow.com/questions/2536379/… & stackoverflow.com/questions/17732897/…
【解决方案2】:

请试试我的代码:

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

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

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多