Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
5

Time Calculation with break (Day and Night Shift) in 24hr format

Community Beginner ,
May 15, 2024 May 15, 2024

I have a timesheet where I need to calculate times for day and night shift workers (with breaks) in 24hr time.

 

I can get the day shift hours to calculate fine however the I cannot get the night shift hours to calculate correctly.  

 

Below is a screen shot of the fields and the field names along with the script I am currently using on the top line (I have used the same script on the second line but changed the field names to match i.e 8.1.0 instead of 8.0.0).

 

Adobe SC.png

var start = this.getField("8.0.0").value;
var finish = this.getField("11.0.0").value;
if (start=="" || finish=="") event.value = "";
else {
var lunchout = this.getField("9.0.0").value;
var lunchin = this.getField("10.0.0").value;
var startArr = start.split(":");
var finishArr = finish.split(":");
var hourWDiff = Math.abs(finishArr[0] - startArr[0]);
var minWDiff = (Math.abs(finishArr[1] - startArr[1])/60*100);
var hourLDiff = 0;
var minLDiff = 0;
if (lunchout!="" && lunchin!="") {
var lunchoutArr = lunchout.split(":");
var lunchinArr = lunchin.split(":");
hourLDiff = Math.abs(lunchoutArr[0] - lunchinArr[0]);
minLDiff = (Math.abs(lunchoutArr[1] - lunchinArr[1])/60*100);
}
var totalHrs = hourWDiff + (minWDiff/100) - (hourLDiff + (minLDiff/100));
event.value = totalHrs;
}

TOPICS
How to , JavaScript , PDF forms
644
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
May 16, 2024 May 16, 2024

Try this:

 

var start = this.getField("8.0").value; 
var finish = this.getField("11.0").value; 

if (start == "" || finish == "") { 
 event.value = "";} 
else { 
 var lunchout = this.getField("9.0").value; 
 var lunchin = this.getField("10.0").value; 
    
 var startArr = start.split(":").map(Number); 
 var finishArr = finish.split(":").map(Number); 
 var startHour = startArr[0]; 
 var startMin = startArr[1];
 var finishHour = finishArr[0]; 
 var finishMin = finishArr[1];

 if (finishHour < startHour || (finishHour === startHour && finishMin < startMin)) { 
  finishHour += 24;} 

 var hourWDiff = finishHour - startHour; 
 var minWDiff = (finishMin - startMin) / 60; 

 var hourLDiff = 0; 
 var minLDiff = 0; 

 if (lunchout != "" && lunchin != "") { 
  var lunchoutArr = lunchout.split(":").map(Number); 
  var lunchinArr = lunchin.split(":").map(Number); 
  var lunchOutHour = lunchoutArr[0]; 
  var lunchOutMin = lunchoutArr[1];
  var lunchInHour = lunchinArr[0]; 
  var lunchInMin = lunchinArr[1];

  if (lunchInHour < lunchOutHour || (lunchInHour === lunchOutHour && lunchInMin < lunchOutMin)) { 
   lunchInHour += 24;}

   hourLDiff = lunchInHour - lunchOutHour; 
   minLDiff = (lunchInMin - lunchOutMin) / 60; }

  var totalHrs = (hourWDiff + minWDiff) - (hourLDiff + minLDiff); 
    event.value = totalHrs;}

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
May 16, 2024 May 16, 2024

Thank you so much Nesa, works perfectly 😁

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Dec 16, 2024 Dec 16, 2024
LATEST

Hi Nesa, I have found a little gremlin in this 😞

 

Something isn’t quite right with the lunch calculations.. The top line has calculated corrected at 9.5 hours but when you change the lunch break at 11:30 – 12:00 it drop back to 8.5 hours?

lilredrum_0-1734412669682.png

 

Still using as below:

var start = this.getField("8.0").value; var finish = this.getField("11.0").value; if (start == "" || finish == "") { event.value = "";} else { var lunchout = this.getField("9.0").value; var lunchin = this.getField("10.0").value; var startArr = start.split(":"); var finishArr = finish.split(":"); var startHour = parseInt(startArr[0]); var finishHour = parseInt(finishArr[0]); if (finishHour < startHour) { finishHour += 24;} var hourWDiff = finishHour - startHour; var minWDiff = (Math.abs(finishArr[1] - startArr[1]) / 60) * 100; var hourLDiff = 0; var minLDiff = 0; if (lunchout != "" && lunchin != "") { var lunchoutArr = lunchout.split(":"); var lunchinArr = lunchin.split(":"); hourLDiff = Math.abs(lunchoutArr[0] - lunchinArr[0]); minLDiff = (Math.abs(lunchoutArr[1] - lunchinArr[1]) / 60) * 100;} var totalHrs = hourWDiff + (minWDiff / 100) - (hourLDiff + (minLDiff / 100)); event.value = totalHrs;}

lilredrum_1-1734412866154.png

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines