2015-12-11 5 views
-2

У меня есть вопрос. В JavaScript, как я могу рассчитать разницу между двумя временами.Как рассчитать разницу между двумя временами в JS

Ниже я получаю значения времени от формы ввода (тип ввода = время) и пытается вычислить разницу между двумя моментами.

<scirpt> 
    function cal(obj) { 
    var time = document.getElementById(obj.id).value; 
    document.getElementById("endtime").value = time; 
} 
</script> 

в теле тега

<table class="table table-striped table-bordered table-hover" id="screentime"> 
    <tr> 
     <th>Start Time</th> 
     <th>End Time</th> 
     <th></th> 
    </tr> 
    <tr class="item1"> 
     <td><input type="time" class="starttime" name="starttime" id="starttime" style="height:25px;"/></td> 
     <td><input type="time" class="endtime" name="endtime" id="endtime" style="height:25px;" id="disabledInput" disabled/></td> 
     <td><input type="button" value="delete" class="btn btn-outline btn-primary btn-xs" onclick="javascript:delTime(this);" /></td> 
    </tr> 
    <tr class="item2"> 
     <td><input type="time" class="starttime" name="starttime" id="starttime" style="height:25px;"/></td> 
     <td><input type="time" class="endtime" name="endtime" id="endtime" style="height:25px;"/></td> 
     <td><input type="button" value="delete" class="btn btn-outline btn-primary btn-xs" onclick="javascript:delTime(this);" /></td> 
    </tr> 
</table> 

кроме того, когда я нажал на кнопку, метки 'тр' будет добавлять и удалять из JQuery. Как выбрать правильный тег для вычисления.

function addTime() { 
    var lastItemNo = $("#screentime tr:last").attr("class").replace("item", ""); 

    var newitem = $("#screentime tr:eq(1)").clone(); 
    newitem.removeClass(); 
    newitem.find("td:eq(0)").attr("rowspan", "1"); 
    newitem.addClass("item"+(parseInt(lastItemNo)+1)); 

    $("#screentime").append(newitem); 
    return; 

}

+1

DOM элемент ID должен быть уникальным ** **. У вас много элементов с одинаковыми идентификаторами. –

+0

Кроме того, вы не должны хранить идентификаторы в имени класса и разбирать его таким образом. Эта скрипка может помочь, немного: http://jsfiddle.net/ykurmangaliyev/8hguqdxn/ –

ответ

1

Попробуйте эту скрипку, я сделал здесь: https://jsfiddle.net/rjnwhyw7/1/

Это простая функция, которая по существу только извлекает значения из входных данных, принимает правильную подстроку, представляющую часы и минуты и высчитывают отличие от их целочисленных значений. Ввод времени HTML5 также преобразует значения PM в 24-часовое время, поэтому вам не нужно беспокоиться об этом случае.

function calculate() { 
    // Get the string values of each time. 
    var startTime = $('.item1 .starttime').val(); 
    var endTime = $('.item1 .endtime').val(); 

    // Calculate the difference between hours and minutes by retrieving the correct substring and converting the string value to an integer. 
    var hours = parseInt(endTime.substr(0, 2), 10) - parseInt(startTime.substr(0, 2), 10); 
    var minutes = parseInt(endTime.substr(3, 5)) - parseInt(startTime.substr(3, 5), 10); 
    // Convert the difference to minutes and return it. 
    return (hours * 60) + minutes; 
} 

Это зависит от вас, как вы проектируете окончательный вывод и обрабатываете отрицательные значения. Вывод может быть представлен как строка или значение в минутах, как я сделал.

0

Пожалуйста, используйте этот код, пожалуйста, укажите любой jquery min js var date1 = new Дата ('2015-12-11 10:04:07'); var date2 = new Дата ('2015-12-11 12:06:05');

var seconds = (date2- date1)/1000; var differance = (дата2 - дата1);

var minutes = (разность - секунды)/60; var hours = (разность - минуты)/60;

более подробно, пожалуйста, проверьте эту ссылку http://www.allwebdevhelp.com/javascript/js-help-tutorials.php?i=55157

Смежные вопросы