簡體   English   中英

Moment.js的2次差異/持續時間(不是日期)

[英]Moment.js difference/duration from 2 times (not dates)

我在moment.js網站上找不到任何有關它的文檔。 我需要從2個持續時間(不是日期)中計算出差異。 例如:

27:10 - 7:20 = 19:50

其中27是小時(可以大於一天中的24小時),而10是分鍾。

我看到moment.js只能對日期進行運算符嗎?

您可以使用moment.duration()

var d1, d2, dDiff, diff;  
d1 = moment.duration('7:20', 'HH:mm');
d2 = moment.duration('27:10', 'HH:mm');

dDiff = d2.subtract(d1);

diff = dDiff.get('days') + ':day(s) ' + dDiff.get('hours') + ':' + dDiff.get('minutes');

console.log(diff); // "0:day(s) 19:50"

更多詳細信息: momentjs持續時間

 function getTimeDifference(start, end) { var s = start.split(':'); var e = end.split(':'); var d = (parseInt(s[0], 10) * 60 + parseInt(s[1], 10)) - (parseInt(e[0], 10) * 60 + parseInt(e[1], 10)); var res = parseInt((d / 60), 10).toString() + ':' + (d % 60).toString(); alert(res); } getTimeDifference('27:10' , '7:20'); 

可能對您有幫助...

這不需要庫,您只需要執行一些base60運算即可。

您只需將兩者都轉換為分鍾,進行減法並轉換回小時和分鍾即可

 //27:10 - 7:20 = 19:50 function calculateDifference(time1,time2){ var diffMins = toMinutes(time1)-toMinutes(time2); return toHoursMinutes(diffMins); } function toMinutes(time){ var [hrs,mins] = time.split(':').map(x => parseInt(x,10)); return hrs*60 + mins; } function toHoursMinutes(mins) { return Math.floor(mins/60) + ":" + (mins%60).toString().padStart('0',2); } console.log(calculateDifference("27:10","7:20")); 

您可以使用純數學來完成

 function f1(a, b) { const [hoursA, minutesA] = a.split(':').map(v => parseInt(v, 10)); const [hoursB, minutesB] = b.split(':').map(v => parseInt(v, 10)); let minutesDiff = 60 * (hoursA - hoursB) + (minutesA - minutesB) const hoursDiff = (minutesDiff - minutesDiff % 60) / 60; minutesDiff = minutesDiff % 60; return hoursDiff + ':' + minutesDiff.toString().padStart(2,'0'); } console.log(f1('27:10','7:20')) console.log(f1('248:10','7:05')) 

或使用日期對象

 function f2(a, b) { const [hoursA, minutesA] = a.split(':').map(v => parseInt(v, 10)); const [hoursB, minutesB] = b.split(':').map(v => parseInt(v, 10)); const time = new Date(Date.UTC(1970)); time.setUTCHours(hoursA - hoursB, minutesA - minutesB); return ((time - time % 86400000) / 3600000 + time.getUTCHours()) + ':' + time.getUTCMinutes().toString().padStart(2,'0'); } console.log(f2('27:10','7:20')) console.log(f2('248:10','7:05')) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM