Skip to main content
taralee02
Participating Frequently
May 24, 2018
Question

Time Hours Calculation in Acrobat Pro X

  • May 24, 2018
  • 1 reply
  • 1695 views

Customer asked how to make it calculate. It was summing the hours up, but not adding it as time. I don't know much about this, customer created this on her own. We don't have anybody at our company that does this. There is some JavaScript code in there to do the calculation, but I have no idea how I know if there is a problem with it and how to make it work and calculate properly. Any help much appreciated! Thank you!

Before I messed with it and added the last time to see if it was working and how, it has 6.9 in there to total up the top 3.

I noticed there is just no code for the total field. All the other Total hours Fields had a section of that JavaScript code below, but the bottom Total hours for day didn't have JavaScript math in it which is why it's not working. The customer did have Sum selected which is why it was adding them wrong. I took that off, but I have no idea how to put a calculation in that field. I mean what the JavaScript Calculation should be. Hoping somebody could be of help. Thanks!

This is the code in there for the Total Hours box:(Assuming I am doing this right, went to JavaScript and clicked Edit all JavaScripts.)

//-------------------------------------------------------------
//-----------------Do not edit the XML tags--------------------
//-------------------------------------------------------------

//<AcroForm>
//<ACRO_source>total hoursRow1:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow1:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow1");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow1");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow10:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow10:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow10");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow10");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow11:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow11:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow11");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow11");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow2:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow2:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow2");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow2");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow3:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow3:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow3");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow3");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow4:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow4:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow4");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow4");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow5:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow5:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow5");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow5");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow6:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow6:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow6");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow6");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow7:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow7:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow7");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow7");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow8:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow8:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow8");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow8");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>total hoursRow9:Calculate</ACRO_source>
//<ACRO_script>
/*********** belongs to: AcroForm:total hoursRow9:Calculate ***********/
   event.value = "";
   var inTimeField = this.getField("start timeRow9");
   var inTime = inTimeField.value;
   var outTimeField = this.getField("enD timeRow9");
   var outTime = outTimeField.value;
   if (inTime!="" && outTime!="") {
    var inTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + inTime);
    var outTimeDate = util.scand("mm-dd-yyyy HH:MM", "01-01-2012 " + outTime);
    if (inTimeDate!=null && outTimeDate!=null) {
     if (inTimeDate.getTime()>outTimeDate.getTime()) {
      //console.println("Error: " + inTimeField.name + " is before " + outTimeField.name);
      outTimeDate.setTime(outTimeDate.getTime()+86400000);
     }     var totalTimeInMins = (outTimeDate.getTime() - inTimeDate.getTime()) / 60000;
     var totalTime_hours = Math.floor(totalTimeInMins / 60);
     var totalTime_mins = Math.floor(totalTimeInMins % 60);
     var totalTime_minsString = totalTime_mins<10 ? "0"+totalTime_mins : ""+totalTime_mins;
     event.value = totalTime_hours + ":" + totalTime_minsString;
    }
   }
//</ACRO_script>
//</AcroForm>

This topic has been closed for replies.

1 reply

Inspiring
May 24, 2018

There have been many examples posted to this forum, you can search to find them. There are easier ways to code the problem by using document level functions to perform the repeated tasks, like converting time string fields to date object values and then to a numeric value with a common base value. The task can also be made easier by using hierarchical field names.

A review of the calculations shows that all time differences are being calculated for January 1, 2012. This is a serious flaw if the date and time period covers the interval when there is a change in Day Light Savings time or BST, British Summer Time? I expect the calculation will be wrong by 1 hour.

taralee02
taralee02Author
Participating Frequently
May 25, 2018

Thank you! I did try to search the forum and say many replies and stuff, but I didn't understand and was confused a lot since I am not experienced in this. I'll keep trying anyway.

And I didn't put that code in there or know where the customer got it from. Customer had created this document and couldn't get it to work right so then asked us if we knew how. Nobody in our office knows this stuff well enough though. Thank you for your time.

Inspiring
May 26, 2018

Without a working form it is pretty hard to tell exactly what the problem is.

Are all the field names in the scripts spelled correctly?

Are the time values being converted properly?

Is the total hours worked field having a "format does not match" error?

Or something entirely different?

The first 2 issues can be caught and alerted in the script by checking result of the getField or util.scand returning a null value.

For the third issue, the time format only allows for the 24 hours in the day, i.e. 00:00 through 23:59, and any number 24:00 or larger will result in an error. The hours to be added needed to be added in minutes, so either the daily hours worked need to be converted from the format of HH:MM to minutes and summed for the grand total time worked. Or the daily total hours are set to the total minutes worked and a custom format scrip converts the minutes to display "HH:MM". This would allow one to just sum the total minutes worked and then format the grand total time worked.