繁体   English   中英

如何计算不同日期的 24 小时格式的两个时间之间的差异?

[英]How can I calculate the difference between two times that are in 24 hour format which are in different dates?

在 JavaScript 中,如何计算具有不同日期的 24 小时格式的两个时间之间的差异?

例如:Date1 是 2019/12/31 11:00:06 AM Date2 是 2020/01/01 01:10:07 PM。 时差应该是 hh:MM:ss 格式的 02:10:13 ..当 appscript 中的日期更改时怎么会变成这样

只需使用日期

const dateDiffMs = (date1,date2 ) => {
    const d1 = new Date(date1);
    const d2 = new Date(date2);
    return d1.getTime() - d2.getTime()
}

const ms2hms = (ms) => {
    const sec = Math.floor(ms / 1000)
    const min = Math.floor(sec / 60)
    const h = Math.floor(min / 60)

    return [
        h,
        min % 60,
        sec % 60,
    ];
};

const format = (n) => n < 10 ? '0' + n : n;

const hms2str = ([h, min, sec]) => {
    return `${h}:${format(min)}:${format(sec)}`
}

alert(hms2str(ms2hms(dateDiffMs('2020/01/01 01:10:07 PM', '2019/12/31 11:00:06 AM')))); // 26:10:01

如果 date1 和 date2 位于同一时区,则此代码可以正常工作。 但我建议你使用 moment.js 或其他一些库

我会通过在秒内收集日期来做到这一点,因为每当计算机决定在 70 年代(纪元)的某个时候为我们跟踪时间。 然后将第二个值传递给它并减去,留下差值。

然后,您需要将其转换回我认为的日期格式:

 (function(){ var dateOneSeconds = new Date().getTime() / 1000; setTimeout(function(){ var dateTwoSeconds = new Date().getTime() / 1000; var seconds = dateTwoSeconds - dateOneSeconds; console.log(seconds); var timeDifferenceInDate = new Date(seconds * 1000).toISOString().substr(11, 8); console.log(timeDifferenceInDate); }, 3000); })();

注意:我使用了超时功能 - 您已经有两个不匹配的日期弹出。

编辑:收到通知后将不会计算天数,您可以使用 date 以秒为单位计算您的时间,然后使用 Math 创建您的显示:

 (function(){ var dateOneSeconds = new Date().getTime() / 1000; setTimeout(function(){ var dateTwoSeconds = new Date().getTime() / 1000; var seconds = dateTwoSeconds - dateOneSeconds; console.log(seconds); /* var timeDifferenceInDate = new Date(seconds * 1000).toISOString().substr(11, 8); */ seconds = Number(seconds); var d = Math.floor(seconds / (3600*24)); var h = Math.floor(seconds % (3600*24) / 3600); var m = Math.floor(seconds % 3600 / 60); var s = Math.floor(seconds % 60); timeDifferenceInDate = d + ':' + h + ':' + m + ':' + s; console.log(timeDifferenceInDate); }, 3000); })();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM