为了账号安全,请及时绑定邮箱和手机立即绑定

在javascript中计算时间时得到一个负数

在javascript中计算时间时得到一个负数

犯罪嫌疑人X 2023-06-15 09:50:07
我正在处理 pdf 表单并尝试从 2 个字段计算小时数。只要时间不超过午夜(24 小时格式),我就会得到正确的响应。一旦过了午夜,我就会得到一个负数。如果返回值为负数,有没有办法将 24 小时加到返回值上?这是该字段的计算结果    var startTime = this.getField("SHIFT STARTRow1").value;    var endTime = this.getField("SHIFT ENDRow1").value;    this.getField("TOTAL HOURSRow1").value = timeDiff(startTime, endTime);    if ((event.value == "") || (event.value == Infinity) || isNaN(event.value)) {event.value = "";} 这是 javascript 的形式 - timeDifffunction timeDiff(startTime, endTime) {    var startArr = startTime.split(":");    var endArr = endTime.split(":");    var startDate = new Date(0, 0, 0, startArr[0], startArr[1], 0);    var endDate = new Date(0, 0, 0, endArr[0], endArr[1], 0);    var diff = endDate.getTime() - startDate.getTime();    var hours = diff / 1000 / 60 / 60;    return hours.toFixed(2)    }    console.log(timeDiff('6:24', '8:13')) // 1.82所以使用这个脚本,如果我输入 12:30 作为开始时间和 01:45 作为结束时间,我得到 -10.75 的回报。但是,我需要 13.25 的回报。我试图找到另一个帮助我解决这个问题的线程,但也许我忽略了它。有什么帮助吗?
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

如果结束时间小于开始时间,则加 24


function timeDiff(startTime, endTime) {

    var startArr = startTime.split(":").map(Number);

    var endArr = endTime.split(":").map(Number);

    if (startArr[0] > endArr[0]) {

      endArr[0] += 24;

    }

    var hours = endArr[0] + endArr[1]/60 - startArr[0] - startArr[1]/60;

    return hours.toFixed(2)

    }


    console.log(timeDiff('23:10', '1:00'))


查看完整回答
反对 回复 2023-06-15
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

如果返回值为负数,有没有办法将 24 小时加到返回值上?

嗯,是 -

if(hours < 0) hours += 24;


查看完整回答
反对 回复 2023-06-15
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号