確定兩個特定日期時間之間的時間差是許多應用程式中的常見要求。本文提供了使用 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 的第三方外掛程式:
var s = d.format("hh:mm:ss");
以上是如何使用 moment.js 準確計算兩個日期時間之間的時差?的詳細內容。更多資訊請關注PHP中文網其他相關文章!