确定两个实例之间的时间差是各种编程场景中的一项基本任务。本文深入探讨了如何使用具体示例有效地计算这种差异。
考虑以下要求:
var now = "04/09/2013 15:00:00"; var then = "04/09/2013 14:20:30"; //expected result: "00:39:30"
最初,您可以尝试以下方法:
var now = moment("04/09/2013 15:00:00"); var then = moment("04/09/2013 14:20:30"); console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss")) // outputs 10:39:30
然而,在这个例子中,结果中出现了意外的值“10”。这是因为 moment.duration 将现在与那时之间的差异转换为包含内部值(如毫秒)的对象。要将持续时间转换为时间间隔,您可以使用:
duration.get("hours") + ":" + duration.get("minutes") + ":" + duration.get("seconds")
这将产生所需的结果:“00:39:30。”
注意: 此方法仅适用于持续时间少于 24 小时的情况。对于更长的持续时间,您需要不同的方法。
var now = "04/09/2013 15:00:00"; var then = "02/09/2013 14:20:30"; var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss")); var d = moment.duration(ms); var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss"); // outputs: "48:39:30"
在这种情况下,我们将时间差计算为毫秒,将其转换为持续时间对象 d,然后使用 UTC 时间对其进行格式化。这给了我们正确的结果,“48:39:30。”
或者,您可以使用 moment-duration-format 插件来简化格式化过程。
以上是如何在 JavaScript 中准确计算两个日期时间之间的时差?的详细内容。更多信息请关注PHP中文网其他相关文章!