[英]How can I do sum two time values in javascript
我一直在嘗試實現將兩個值相加為小時的 function。 “例如:01:30 + 00:30 = 02:00”
所以我在下面有這個 function 只有當兩個值的總和等於上面例子的整數時才有效。 但問題是當值是 01:45 + 00:20 時,它給了我 33:05 而不是 02:05。
我嘗試了幾種組合,但到目前為止沒有任何效果。
function sumOFHoursWorked(){
var time1 = "00:45";
var time2 = "01:20";
var hour=0;
var minute=0;
var second=0;
var splitTime1= time1.split(':');
var splitTime2= time2.split(':');
hour = parseInt(splitTime1[0])+parseInt(splitTime2[0]);
minute = parseInt(splitTime1[1])+parseInt(splitTime2[1]);
hour = hour + minute/60;
minute = minute%60;
second = parseInt(splitTime1[2])+parseInt(splitTime2[2]);
minute = minute + second/60;
second = second%60;
var REalhourstime = ('0' + hour).slice(-2)+':'+('0' + minute).slice(-2);
alert(REalhourstime);
document.getElementById('realhorasTB').innerHTML = REalhourstime;
}
我會將其轉換為分鍾並減去,然后計算小時和分鍾。
function totalMinutes (time) { var parts = time.split(":") return +parts[0] * 60 + +parts[1] } function timeDiff (time1, time2) { var mins1 = totalMinutes(time1) var mins2 = totalMinutes(time2) var diff = mins2 - mins1 var hours = '0' + (Math.floor(diff/60)) var minutes = '0' + (diff - hours * 60) return (hours.slice(-2) + ':' + minutes.slice(-2)) } console.log(timeDiff("00:45", "01:20"))
如果 go 在午夜時分,它會失敗,一個簡單的小於檢查可以解決這個問題。
function totalMinutes (time) { var parts = time.split(":") return +parts[0] * 60 + +parts[1] } function timeDiff (time1, time2) { var mins1 = totalMinutes(time1) var mins2 = totalMinutes(time2) if (mins2 < mins1) { mins2 += 1440 } var diff = mins2 - mins1 var hours = '0' + (Math.floor(diff/60)) var minutes = '0' + (diff - hours * 60) return (hours.slice(-2) + ':' + minutes.slice(-2)) } console.log(timeDiff("23:45", "00:45"))
這實際上取決於您的時間如何,我的意思是它將以mm:ss
格式或hh:mm:ss
或hh:mm:ss:msms
為單位,但只需簡單的幾秒鍾和幾分鍾,您就可以做這樣的事情
function sumOFHoursWorked(){ var time1 = "00:45".split(':'); var time2 = "01:20".split(':'); let secondSum = Number(time1[1]) + Number(time2[1]); let minSum = Number(time1[0]) + Number(time2[0]); if(secondSum > 59){ secondSum = Math.abs(60 - secondSum); minSum += 1; } if(secondSum < 10){ secondSum = `0${secondSum}`; } if(minSum < 10){ minSum = `0${minSum}`; } return `${minSum}:${secondSum}`; } console.log(sumOFHoursWorked());
time1
和time2
字符串最后缺少秒數。 例如, var time1 = "00:45:00"
。 否則,您的計算將有一些NaN
值。hour
是一個浮點數(~2.083333333333333),所以('0' + hour)
是'02.083333333333333'。 你可以改用這樣的東西: ('0' + Math.floor(hour))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.