確定兩個實例之間的時間差是各種程式場景中的一項基本任務。本文深入探討如何使用具體範例有效地計算這種差異。
考慮以下要求:
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中文網其他相關文章!