Странная ошибка в этом сценарии расчета времени? - PullRequest
4 голосов
/ 05 июля 2010

По сути, этот скрипт будет вычитать StartTime из EndTime, используя плагин jQuery, форма html заполняется значениями Start и End Time в формате HH: MM, поле ввода заполняется результатом, оно работает, за исключением одной проблемы:

Если начальное время находится между 08:00 и 09:59, оно просто возвращает странные результаты - если точнее, результаты - 10 часов, почему?

Все остальные входные данные рассчитываются правильно!

function setValue() { 
var startTime = document.getElementById('ToilA'); 
var endTime = document.getElementById('EndHours'); startTime = startTime.value.split(":"); 
var startHour = parseInt(startTime[0]); 
var startMinutes = parseInt(startTime[1]); 
endTime = endTime.value.split(":"); 
var endHour = parseInt(endTime[0]); 
var endMinutes = parseInt(endTime[1]); 
//var hours, minutes; 
var today = new Date(); 
var time1 = new Date(2000, 01, 01, startHour, startMinutes, 0); 
var time2 = new Date(2000, 01, 01, endHour, endMinutes, 0); var milliSecs = (time2 - time1); 
msSecs = (1000); 
msMins = (msSecs * 60); 
msHours = (msMins * 60); 
numHours = Math.floor(milliSecs/msHours); 
numMins = Math.floor((milliSecs - (numHours * msHours)) / msMins); 
numSecs = Math.floor((milliSecs - (numHours * msHours) - (numMins * msMins))/ msSecs); numSecs = "0" + numSecs; numMins = "0" + numMins; DateCalc = (numHours + ":" + numMins); 

document.getElementById('CalculateHours').value = DateCalc; }

1 Ответ

9 голосов
/ 05 июля 2010

Всякий раз, когда у вас возникают математические проблемы с числом 8, это нечто превращается в восьмеричную систему:)

Числа, начинающиеся с 0 , интерпретируются как восьмеричные числа в Javascript .

Это не проблема из 01..07, потому что они одинаковы в обеих системах.

Но 08 и 09 не существуют в системе, поэтому они возвращают 0.

Также см. этот вопрос , который также предоставляет решение: укажите базовый параметр при выполнении parseInt:

parseInt("09", 10);  // base 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...