2013-08-12 2 views
0

У меня есть код времени получить разностную форму два времениПолучить Сумму функции Даты Javascript

 var starthours = document.getElementById("time3").value; 
     var endhours = document.getElementById("time4").value; 
     start = starthours.split("."); 
     end = endhours.split("."); 
     var startDate = new Date(0, 0, 0, start[0], start[1], 0); 
     var endDate = new Date(0, 0, 0, end[0], end[1], 0); 
     var diff = endDate.getTime() - startDate.getTime(); 
     var hours = Math.floor(diff/1000/60/60); 
     diff -= hours * 1000 * 60 * 60; 
     var minutes = Math.floor(diff/1000/60); 
    document.getElementById("hourdiff").value = (hours < 9 ? "0" : "") + hours + "." + (minutes < 9 ? "0" : "") + minutes; 

Но теперь я должен добавить еще одно поле времени для этого результата, я получаю это значение с помощью этого кода

var timetv = document.getElementById("timetv").value; 

And I want to add this to above time difference how to do that, Please help me.. 

Start time = 10.30 
End time = 12.30 
Time TV = 01.15 

Resualt = (End Time - Start time) + Time TV 

И ответ должен быть = 3,15

+0

Где PHP здесь? –

+0

дайте некоторый контекст пожалуйста. Являются ли ваши значения входного значения (все 3) равными или имеют дату? Судя по использованию раскола, они должны быть как раз во времени, так и в формате «hh.mm». Если это так, то почему они должны быть преобразованы в формат даты, а затем использовать 'getTime'? мы не можем просто делать (часы * 60) + минуты? – Harry

ответ

0

Попробуйте это,

var starthours = document.getElementById("time3").value; 
var endhours = document.getElementById("time4").value; 
var timetv = document.getElementById("timetv").value; 

start = starthours.split("."); 
end = endhours.split("."); 
tvtime = timetv.split("."); 

var startDate = new Date(0, 0, 0, start[0], start[1], 0); 
var endDate = new Date(0, 0, 0, end[0], end[1], 0); 

var diff = endDate.getTime() - startDate.getTime(); 

var hours = Math.floor(diff/1000/60/60); 
diff -= hours * 1000 * 60 * 60; 
var minutes = Math.floor(diff/1000/60);  

hours = hours + parseInt(tvtime[0]); 
minutes = minutes + parseInt(tvtime[1]); 
+0

Я пробовал этот способ, но не работал –

+0

@JoelCampbell: У меня есть модифицированный код, попробуйте код выше. –

+0

@JoelCampbell: actully у нас уже есть часы и минуты, поэтому нам не нужно преобразовывать их во времени, как этот var tvtimedate = new Date (0, 0, 0, tvtime [0], tvtime [1], 0). –

0

этот для получения значения, когда у вас уже есть даты, обработанные в объекте Date из вашей формы.

http://jsfiddle.net/gLReS/

var time1 = new Date('2013/08/12 10:30'); 
var time2 = new Date('2013/08/12 12:30'); 
var time3 = new Date('2013/08/12 1:15'); 

var result = (time2.getTime() - time1.getTime()) + time3.getTime(); 
var resultTime = new Date(result); 
alert(resultTime); 

Другое дело, однако, получить эти объекты, и это одна зависит от формата даты.

+0

Это потому, что IE не поддерживает формат «2013-08-12 10:30» - попробуйте сейчас. –

0

Я не понимаю, в чем ваша проблема.

var d = new Date(
    new Date(0, 0, 0, 12, 30) - 
    new Date(0, 0, 0, 10, 30) + 
    (+new Date(0, 0, 0, 1, 15)) // transform Date into timestamp 
); 
[d.getHours(), d.getMinutes()]; // [3, 15] 

Кроме того, я обычно заменяют

(hours < 9 ? "0" : "") + hours 

с

("0" + hours).slice(-2) 
Смежные вопросы