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

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

Community Beginner ,
May 15, 2024 May 15, 2024

Copy link to clipboard

Copied

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

Views

334

Translate

Translate

Report

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

Copy link to clipboard

Copied

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;}

 

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

Thank you so much Nesa, works perfectly 😁

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

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

 

Votes

Translate

Translate

Report

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