Copy link to clipboard
Copied
I've having some trouble with either rounding or calculating (or both), values for a timesheet.
I thought my coding was all correct, however it seems to be rounding UP.
Example:
Start time Break Finish time Total hours
8:30 15 mins 13:15 5.00 Total hours should be 4.50
This is the coding I am using:
var Break = getField("Break1").value;
// start
var start = getField("Start1").value;
var startArr = start.split(":");
// finish
var finish = getField("Finish1").value;
var finishArr = finish.split(":");
//difference
var hourDiff = Math.abs(finishArr[0] - startArr[0]);
var minDiff = Math.floor((Math.abs(finishArr[1] - startArr[1]) / 60)*100);
if (minDiff.toString().length==1)
minDiff = '0' + minDiff;
var output = hourDiff + "." + minDiff;
if((output==Infinity)||isNaN(output)){
event.value="";
} else {
event.value = output-Break;
}
Could someone please assist where I've gone wrong?
FYI - the break gives the value 0.25
Replace following lines:
var hourDiff = Math.abs(finishArr[0] - startArr[0]);
var minDiff = Math.floor((Math.abs(finishArr[1] - startArr[1]) / 60)*100);
with this lines:
var hourDiff = Math.abs(finishArr[0] - startArr[0]);
var minDiff = finishArr[1] - startArr[1];
if ((finishArr[1] - startArr[1]) < 0) {
hourDiff = hourDiff - 1;
minDiff = minDiff + 60;
}
minDiff = Math.floor((minDiff / 60)*100);
Copy link to clipboard
Copied
15 minutes of finish time are lower as the 30 minutes of the start time. In this case you must substract 1 hour.
Copy link to clipboard
Copied
Would you be able to assist in how I'd go about that? (Coding if possible)
I am racking my brain and cannot think of the correct way to write it.
Thanks in advance
Copy link to clipboard
Copied
Replace following lines:
var hourDiff = Math.abs(finishArr[0] - startArr[0]);
var minDiff = Math.floor((Math.abs(finishArr[1] - startArr[1]) / 60)*100);
with this lines:
var hourDiff = Math.abs(finishArr[0] - startArr[0]);
var minDiff = finishArr[1] - startArr[1];
if ((finishArr[1] - startArr[1]) < 0) {
hourDiff = hourDiff - 1;
minDiff = minDiff + 60;
}
minDiff = Math.floor((minDiff / 60)*100);
Copy link to clipboard
Copied
Thank you so much for your help.
Works perfectly.