2015-09-03 3 views
0

У меня есть код для расчета между 2-х часовыми моментами, результатом которых является количество минут. Он работает нормально, если нет часа ночи (например: 10:00 - 12:00, 14:00 - 16:00) Проблема возникает, когда я заполняю ее 23:00 и 01:00 (с 11:00 до 1:00), она возвращает минус и рассчитывает назад. Вы можете увидеть мой код по фрагменту ниже.Javascript Calculate Time, включая за ночь

Кто-нибудь знает, как считать это нормально, если есть ночь? Или это невозможно, если нет даты?

function parseTime(s) { 
 
    var c = s.split(':'); 
 
    return (parseInt(c[0]) * 60) + parseInt(c[1]); 
 
} 
 
function getTotalMin(x) 
 
{ 
 
    var awal = document.getElementById("awaljkab").value; 
 
    var akhir = document.getElementById("akhirjkab").value; 
 
    var selisih = parseTime(akhir) - parseTime(awal); 
 
    x.value = String(selisih); 
 
}
<!-- input clock as HH:mm ; example: 10:00 --> 
 
<input type="text" class="form-control timepicker" name="startjkab" id="awaljkab" /> 
 
<input type="text" class="form-control timepicker" name="finishjkab" id="akhirjkab" /> 
 
<input type="text" class="form-control" name="lamajkab" onfocus="getTotalMin(this);" readonly="readonly" />

+0

Скрипки, которую вы имели раньше было лучше, чем идея фрагмента кода в вашем посте. – suvroc

+0

Иногда я смущен, когда спрашиваю здесь, люди пытаются изменить мой вопрос на фрагмент ... –

+0

Потому что лучший способ показать код проблемы в сообщении, а также подготовить среду, чтобы быстрее помогать вам другими людьми – suvroc

ответ

1

Вы можете просто добавить 24 часа, чтобы второе значение, если оно меньше, чем первый один

var to = parseTime(akhir); 
var from = parseTime(awal); 
var selisih; 
if (to < from) 
{ 
    selisih = 24*60 + to - from; 
} else { 
    selisih = to - from; 
} 

http://jsfiddle.net/Lse3sk44/1/

+0

спасибо за ответ, но уже получил его от Нико. :) –

+0

после проб и ошибок, я использую ваш код и работает более уместно. Потому что он подсчитывает до минут. Благодаря suvroc –

2

Перед вычислением selisih вы должны проверить, если второй час меньше, чем первый:

if (akhir < awal) akhir += 24 * 60; 

Таким образом, вы убедитесь, что akhir представляет следующий день. После этого вы можете рассчитать selih так, как вы это делали.

+0

Добро пожаловать! Примите ответ, пожалуйста. – LostMyGlasses

+0

Ладно .. все еще нужно подождать 3 минуты –

+0

А, ок, извините за торопитесь – LostMyGlasses

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