2013-04-06 1 views
0

Я использую плагин date.js для преобразования моих времен в объект даты, а затем я вычитаю их. Но результат недействителен. Мое время в этом формате 11:00 pm Это то, что я делаю:Вычитание двух раз в формате AM/PM с использованием javascript

var tim_i = $('#in_time').val(); 
var tim_o = $('#out_time').val(); 
total_tim = ""; 
if (tim_i && tim_o){ 
    d1 = Date.parse(tim_i); 
    d2 = Date.parse(tim_o); 
    date_diff = new Date(d2 - d1); 
    total_tim=date_diff.getHours() + ':' + date_diff.getMinutes(); 
} 

$('#total_time').val(total_tim); 

Есть ли что-то еще мне нужно сделать?

+1

Взгляните: http://stackoverflow.com/questions/141348/what-is-the-best-way-to-parse-a-time-into-a-date-object-from -user-input-in-javas Он объясняет, как анализировать время с помощью JS. – Sam

+0

Имейте в виду, что [Datejs заброшен] (http://stackoverflow.com/tags/datejs/info). –

ответ

0

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

var tim_i = new Date($('#in_time').val()); 
var tim_o = new Date($('#out_time').val()); 
total_tim = ""; 
if (tim_i && tim_o) { 
    var timeDiff = Math.abs(tim_o.getTime() - tim_i.getTime()); 
    var getHours = Math.ceil(timeDiff/(1000 * 3600)); 
    var getMinutes = Math.ceil(timeDiff % (1000 * 60)); 
    total_tim = getHours + ':' + getMinutes; 
} 
+0

Теперь я получаю это как результат: NaN: NaN –

1

Класс TimeSpan в Datejs может помочь упростить задачу.

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

Пример

var d1 = Date.parse("6:30 am"); 
var d2 = Date.parse("11:00 pm"); 

var diff = new TimeSpan(d2 - d1); 

console.log("Hours: ", diff.hours); 
console.log("Minutes: ", diff.minutes); 

Надеется, что это помогает.

EDIT: Вы даже можете упростить в одну строку, если хотите действительно быть краткими.

new TimeSpan(Date.parse("11:00 pm")-Date.parse("6:30 am")).toString("H:mm") 
Смежные вопросы