JavaScript/jQuery:减去小时和分钟

Cla*_*nus 5 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>
Run Code Online (Sandbox Code Playgroud)

我需要的:

当开始或结束时间更改时,差异会显示在第三个输入中。

例如 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>
Run Code Online (Sandbox Code Playgroud)

如何生成小时和分钟?

Vik*_*ngh 6

使用momentjs检查以下工作演示:

let valuestart = moment.duration("20:00", "HH:mm");
let valuestop = moment.duration("23:15", "HH:mm");
let difference = valuestop.subtract(valuestart);

console.log(difference.hours() + ":" + difference.minutes())
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>
Run Code Online (Sandbox Code Playgroud)