javascript - 如何在javascript中求和两个时间值
问题描述
我一直在尝试实现将两个值相加为小时的函数。“例如:01:30 + 00:30 = 02:00”
所以我在下面有这个函数,只有当两个值的总和等于上面的例子的整数时才有效。但问题是当值是 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"))
它会在超过午夜的时候失败,一个简单的小于检查可以解决这个问题。
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"))
推荐阅读
- python - tkinter 的 Python 问题
- javascript - 如何在手机上隐藏下拉菜单的子链接?
- azure - 发布带有 React + 身份验证的 Asp.net core 3.1.3 到 Azure Linux App Service 不起作用
- spring-security - 即使使用 antmatcher 许可,带有 Keycloak 的 Spring Security 也会重定向到登录
- django - WebSocket握手期间的Django-channels错误:意外的响应代码:404
- python - 试图理解面向对象的编程。如何使用对象组合?
- angular - RxJS distinct 运算符没有从对象数组中获取不同的值
- reactjs - 动态需要图像在 reactjs/nextjs 中不起作用
- swift - 为什么我的 UILabel 无法显示成功获取的值?
- java - 可以将两个参数传递给模态