【问题标题】:Calculate hours between 22:00(today) and 06:00(tomorrow) with jQuery使用 jQuery 计算 22:00(今天)和 06:00(明天)之间的小时数
【发布时间】:2018-10-08 11:49:53
【问题描述】:

我想用 javascript 或 jquery 计算 22:00(今天)和 06:00(明天)之间的时间。如果开始时间 = 23:10 并且停止时间 = 05:20 工作时间为 06:10,因为从 23:10(今天)到 05:20(明天)有 06:10 小时。

我有两个输入字段:

<input type="text" name="startTime" autocomplete="off" style="display:inline;width: 90px;" id="startTime" class="timepicker"/>

<input type="text" name="stopTime" autocomplete="off" style="display: inline;width: 90px;" id="stopTime" class="timepicker1"/>

我的 javascript 代码是:

var start_time = $('#startTime').val();
var end_time = $('#stopTime').val();


var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;


var decimalTimeString = diff;
var n = new Date(0,0);
n.setSeconds(+decimalTimeString * 60 * 60);
var test = n.toTimeString().slice(0, 8);


$('#workingValue').val(test);

此 javascript 代码有效,但仅计算 00:00 至 23:45 之间的时间,例如如果开始时间 = 00:00 和停止时间 = 23:45 workingValue = 23:45 这是正确的。但如果开始时间是 22:00(例如)停止时间是 01:00,我的工作值不正确。它返回我 00:00 但必须是 03:00。请帮我解决问题! 附:对不起,我的英语不太好!

【问题讨论】:

标签: javascript jquery time


【解决方案1】:

你可以使用moment
在 sn-p 你可以展示一个例子

let now  = "10/10/2018 15:00:00";
let then = "07/10/2018 14:20:30";

let ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
let d = moment.duration(ms);
let s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

document.getElementById("time").innerText = s
<script src="https://momentjs.com/downloads/moment.js"></script>

<div id="time"></div>

【讨论】:

    【解决方案2】:

    使用您帖子中的信息,即您只有两个没有日期信息的时间字符串,您可以在 Vanilla JavaScript 中执行以下操作:

    const ge=id=>document.getElementById(id);
    const res=ge('result'), st=ge('start'), en=ge('end');
    document.forms[0].addEventListener('keyup',function(el){
      res.innerHTML=new Date(new Date('1970-1-2 '+en.value)
                            -new Date('1970-1-1 '+st.value)).toGMTString().substr(17,5);
    })
    <form>
    <input id="start" value="22:30"> start<br>
    <input id="end" value="2:00"> end<br>
    </form>
    <div id="result"></div>

    【讨论】:

      【解决方案3】:

      当您使用 00:0023:45 计算此计算时,它会给出 肯定结果,所以没关系,但在相反的情况下,让我们说 23:45 00:00 它会给出负结果

      var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        相关资源
        最近更新 更多