2010-08-30 4 views
1

Я нашел следующий код, который работает хорошо для калькулятора табеля рабочего времени я используюразница между временами в JavaScript

function convertSecondsToHHMMSS(intSecondsToConvert) { 
    var hours = convertHours(intSecondsToConvert); 
    var minutes = getRemainingMinutes(intSecondsToConvert); 
    minutes = (minutes == 60) ? "00" : minutes; 
    var seconds = getRemainingSeconds(intSecondsToConvert); 
    return hours+" hrs "+minutes+" mins"; 
} 

function convertHours(intSeconds) { 
    var minutes = convertMinutes(intSeconds); 
    var hours = Math.floor(minutes/60); 
    return hours; 
} 

function convertMinutes(intSeconds) { 
    return Math.floor(intSeconds/60); 
} 

function getRemainingSeconds(intTotalSeconds) { 
    return (intTotalSeconds%60); 
} 

function getRemainingMinutes(intSeconds) { 
    var intTotalMinutes = convertMinutes(intSeconds); 
    return (intTotalMinutes%60); 
} 

function HMStoSec1(T) { 
    var A = T.split(/\D+/) ; return (A[0]*60 + +A[1])*60 + +A[2] 
} 

var time1 = HMStoSec1("10:00:00"); 
var time2 = HMStoSec1("12:05:00"); 
var diff = time2 - time1; 
document.write(convertSecondsToHHMMSS(diff)); 

Он отлично работает, когда time1 больше time2, если time1 меньше TIME2 дополнительных час вычитается, например.

var time1 = HMStoSec1("09:00:00"); 
var time2 = HMStoSec1("08:55:00"); 
var diff = time2 - time1; 
document.write(convertSecondsToHHMMSS(diff)); // writes "1 hr 5 mins" instead of "0 hr 5 mins" 

Я думаю, что это как-то связано с Math.floor в функции convertHours.

Я пытаюсь построить что-то, что может занять только часы и минуты, и вычесть/добавить время, а не фактически просто количество часов и минут.

Должен быть более простой способ, который, к сожалению, ускользает от меня, любая помощь будет очень признательна.

ответ

2

Напольные работы отличаются от большинства людей, ожидающих отрицательных чисел. Он возвращает следующее целое число меньше операнда, поэтому для -1.5 оно вернет -2. Самый простой способ справиться с этим - просто принять абсолютное значение (Math.abs), затем добавить отрицательный знак обратно в конец.

+0

Большое вам спасибо, сейчас просто нужно разработать, как сделать кладбище смены :( – benpalmer

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