首頁 >web前端 >js教程 >如何使用 moment.js 準確計算兩個日期時間之間的時差?

如何使用 moment.js 準確計算兩個日期時間之間的時差?

DDD
DDD原創
2024-11-17 11:39:01391瀏覽

How to Accurately Calculate the Time Difference Between Two Datetimes using moment.js?

取得日期時間之間的時差

確定兩個特定日期時間之間的時間差是許多應用程式中的常見要求。本文提供了使用 moment.js 獲取精確時間間隔、解決潛在問題並提供替代方法的綜合指南。

問題陳述

給定兩個表示為字串的日期時間,目標是計算時間差並以 HH:MM:SS 格式顯示。例如:

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"

初始嘗試和問題

使用moment.js 的diff 函數,您可以嘗試以下操作:

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 小時,儘管持續時間的內部值是準確的。

正確解決方案

要解決此問題,有兩個選項:

選項1(對於持續時間小於24 小時):

moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")

此方法將時差轉換為UTC,消除任何夏令時不一致的情況。

選項2(適用於持續時間24 小時或更長):

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");

此方法計算以毫秒為單位的時間差,將其轉換為持續時間對象,並分別提取小時、分鐘和秒。

替代方法:moment-duration-format

對於那些尋求格式化持續時間物件的便捷解決方案的人,可以使用名為moment-duration-format 的第三方外掛程式:

var s = d.format("hh:mm:ss");

以上是如何使用 moment.js 準確計算兩個日期時間之間的時差?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn