2015-07-20 4 views
1

Я пытаюсь создать форму с 3 входами (2 разблокирована и один заблокирован), где вы будете вводить 2 times, например 7:30AM и 4:00PM, и она будет генерировать разницу между временем в seconds в третьем ящике.Получение разницы во времени между двумя строками время с Javascript

Проблема в том, что я не могу получить рабочий метод, чтобы фактически рассчитать разницу во времени.

<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
    function UpdateHours(){ 

     var start = $("#time1").val(); 
     var end = $("#time2").val(); 

     var dtStart = new Date("7/20/2015 " + start); 
     var dtEnd = new Date("7/20/2015 " + end); 

     var diff = dtEnd - dtStart; 

     $("#totalTime").val(diff); 
    } 
    $(document).on("change, keyup", "#time1", UpdateHours); 
    $(document).on("change, keyup", "#time2", UpdateHours); 
}); 
</script> 

<input id="time1" type="text" /> 
<input id="time2" type="text" /> 
<input id="totalTime" readonly="readonly" /> 

Это то, что я пробовал до сих пор между прочим. Могу ли я получить помощь, пожалуйста?

+0

Что такое 'переменная hours1'? Почему бы вам не отобразить значение 'diff'? – thatidiotguy

+0

thatidiotguy - это были разные вещи, которые я пробовал. Когда я показываю diff, он отображает '30600000', о котором я не могу понять. –

+0

'30600000' это будут миллисекунды, разделите их на 1000, и вы получите секунды, если это то, что вы имели в виду под« что я не могу понять ». – vinayakj

ответ

1

$(document).ready(function(){ 
 
    
 
    var $time1 = $("#time1"); 
 
    var $time2 = $("#time2"); 
 
    var $diff = $("#totalTime"); 
 

 
    function updateHours(){ 
 

 
     var dtStart = new Date("7/20/2015 " + $time1.val()); 
 
     var dtEnd = new Date("7/20/2015 " + $time2.val()); 
 

 
     var diff = dtEnd - dtStart; 
 

 
     $diff.val(diff/1000); 
 
    } 
 
    $time1.add($time2).on("change, keyup", function(){ 
 
     if($time1.val() && $time2.val()){ 
 
      updateHours() 
 
     } 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="time1" type="text" placeholder="7:00 PM"/> 
 
<input id="time2" type="text" placeholder="8:00 PM"/> 
 
<input id="totalTime" readonly="readonly" />

+1

Благодарим за предложения и указатели. Я полностью работаю так, как это было сейчас :). –

+0

Проблема у меня была, я не знал, как конвертировать из миллисекунд, поэтому я продолжал получать неправильные цифры, потому что я неправильно конвертировал. –

+0

ohh..okk .. получил .. – vinayakj

2

Проблема, с которой вы сталкиваетесь, заключается в том, что вы вычитаете объект из другого объекта. Я не знаю, что решает в этом случае JavaScript, но чтобы быть в безопасности, вы не должны полагаться на это поведение, даже если оно действительно работает. То, что вы должны делать это:

var diff = dtEnd.getTime() - dtStart.getTime(); 

diff будет тогда число миллисекунд между двумя объектами даты.

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