JavaScript/jQuery:减去小时和分钟 我所拥有的:

JavaScript/jQuery:减去小时和分钟 我所拥有的:,javascript,jquery,date,Javascript,Jquery,Date,三个时间输入,包括开始时间、结束时间和两者之间的差值 <input type="time" name="starttime" id="starttime"> <input type="time" name="endtime" id="endtime"> <input type="time" name="duration" id="duration" disabled> 我需要的是: 当开始或结束时间改变时,差异会显示在第三个输入中 e、 g.23:15-

三个时间输入,包括开始时间、结束时间和两者之间的差值

<input type="time" name="starttime" id="starttime">
<input type="time" name="endtime" id="endtime">
<input type="time" name="duration" id="duration" disabled>

我需要的是: 当开始或结束时间改变时,差异会显示在第三个输入中

e、 g.23:15-20:00=03:15

我所尝试的: 到目前为止,我只能生成正确的小时数,但不能生成正确的分钟数

<script>
    jQuery(document).ready(function($) {

        function calculateTime() {

        // Get values.
        var valuestart = $("#starttime").val();
        var valuestop = $("#endtime").val();

        // Create date format.          
        var timeStart = new Date("01/01/2007 " + valuestart);
        var timeEnd = new Date("01/01/2007 " + valuestop);

        // Subtract.
        var difference = timeEnd - timeStart;             

        // Attempt 1: Only gets hours.
        //var difference_as_hours = difference / 60 / 60 / 1000;
        //alert("Hour Difference: " + difference_as_hours); 

        // Attempt 2: Nothing happens.
        //var difference_as_hours_and_minutes = difference.getHours() + ":" + difference.getMinutes(); 
        //alert("Hour And Minutes Difference: " + difference_as_hours_and_minutes); 

        // Attempt 3: Nothing happens.
        //var difference_as_date = new Date("01/01/2007 " + difference);
        //var difference_as_hours_and_minutes = difference_as_date.getHours() + ":" + difference_as_date.getMinutes(); 
        //alert("Hour And Minutes Difference: " + difference_as_hours_minutes); 

        // Attempt 4: Nothing happens.
        var formatted_time = time_format(difference);
        alert(formatted_time);


        }
        $("#starttime, #endtime").change(calculateTime);
        calculateTime();


    });


    function time_format(d) {
        hours = format_two_digits(d.getHours());
        minutes = format_two_digits(d.getMinutes());
        seconds = format_two_digits(d.getSeconds());
        return hours + ":" + minutes + ":" + seconds;
    }

    function format_two_digits(n) {
        return n < 10 ? "0" + n : n;
    }


</script>

jQuery(文档).ready(函数($){
函数计算时间(){
//获取值。
var valuestart=$(“#starttime”).val();
var valuestop=$(“#endtime”).val();
//创建日期格式。
var timeStart=新日期(“2007年1月1日”+valuestart);
var TIMEND=新日期(“2007年1月1日”+valuestop);
//减去。
var差异=时间结束-时间开始;
//尝试1:只得到几个小时。
//var差值=差值/60/60/1000;
//警报(“时差:+时差作为时差);
//尝试2:什么也没发生。
//var difference_as_hours_和_minutes=difference.getHours()+“:“+difference.getMinutes();
//警报(“小时和分钟差:+小时和分钟差”);
//尝试3:什么也没发生。
//var差异=新日期(“2007年1月1日”+差异);
//var difference_as_hours_和_minutes=difference_as_date.getHours()+“:“+difference_as_date.getMinutes();
//警报(“小时和分钟差异:+差异作为小时和分钟);
//尝试4:什么也没发生。
var格式的时间=时间格式(差异);
警报(U时间);
}
$(“#开始时间,#结束时间”)。更改(计算时间);
计算时间();
});
函数时间_格式(d){
小时数=两位数格式(d.getHours());
分钟=格式化两位数字(d.getMinutes());
秒=格式化两位数字(d.getSeconds());
返回时数+“:”+分钟+“:”+秒;
}
函数格式两位数字(n){
返回n<10?“0”+n:n;
}

如何生成小时数和分钟数?

使用以下方法检查以下工作演示:

let valuestart=力矩持续时间(“20:00”、“HH:mm”);
让valuestop=力矩持续时间(“23:15”,“HH:mm”);
让差异=值停止。减去(值开始);
console.log(difference.hours()+“:“+difference.minutes())

我建议您使用,它将帮助您节省大量时间

function calculateTime() {
    // Get values.
    var valuestart = $("#starttime").val();
    var valuestop = $("#endtime").val();

    // Create date format.          
    var timeStart = new Date("01/01/2007 " + valuestart);
    var timeEnd = new Date("01/01/2007 " + valuestop);

    // Subtract.
    var difference = timeEnd - timeStart;

    var time = msToTime(difference);
    console.log(time);

}

function msToTime(s) {
    var ms = s % 1000;
    s = (s - ms) / 1000;
    var secs = s % 60;
    s = (s - secs) / 60;
    var mins = s % 60;
    var hrs = (s - mins) / 60;

    return hrs + ':' + mins + ':' + secs + '.' + ms;
}

$("#starttime, #endtime").change(calculateTime);

请在问题中提及
valuestart
valuestop
。同时告诉我们预期的输出format@VicJordan我查阅了momentjs文档,但没有找到一个明显的减去小时和分钟的例子。请在问题中提及
valuestart
valuestop
。同时告诉我们预期的输出format@VicJordan我已经在“我需要什么”下添加了预期的输出格式。我不清楚您希望我在代码中出现的每一项之外如何提及
valuestart
valuestop
。现在检查我的答案。根据您提供的信息进行更新,当该值小于10时,是否有任何方法可以用前导零填充每个小时和分钟?例如,3:15与03:15相同。例如,1:1等于01:01。这是moment.js可以格式化的吗?我想出来了:
(difference.hours()<10?:“)+difference.hours()
。一个依赖于OP中未标记或提及的库的答案并不比简单地说“使用库”好多少。非库解决方案只需几行代码,不需要4k行库。使用非标准字符串创建日期不是一个好主意,请参阅“使用库”不是答案,它可能是一个有用的注释。