# Time Calculation

Hey People, I have a lil problem here, I am calculating the No. of hours between 2 specific time intervals and adding them together. for eg. Day 1 No. of hours is 5.24 Day 1 No. of hours is 5.24 Day 1 No. of hours is 5.24 ------- Total 15.72 instead of 16.12 Is there any way to get this right. Regards Vishal

In Navision time is a decimal value. The 0.24 value doesn’t mean 24 minutes but 24/100 hour. So, the total of 15.72 is correct.

Hi Peter, I know its correct, but then how do I get around working with this, is there any way, I get hours by deducting 2 time values, for instance a Check in and a Check out time, so the work duration I get is 5.24 hours Vishal

Are the Check in and Check out times in HH:MM or in decimal hours? Are these times stored in a Navision time field?

Hi Peter, The Check in / Check Out is stored in HH:MM:SS format, the deduction gives an a Decimal hours Regards Vishal

Formatting the result might work. I never did that for a time so can’t help you there.

Hi, So then should I believe that there is no work around to this problem…if there I would like to make a request to the Guru’s here, if they could help me out with this problem… Best Regards Vishal

Hi Vishal, I think it’s not so difficult to write a function, which adds one time to another. All you need is to think a little

If you’re working in 3.60 you might consider using the new datatypes DATETIME and DURATION.

Hi Jack, I am aware that 3.6 has this feature, but unfortunately I am working on 3.10. Any other suggestions Vishal

Hi Vishal, I guess these couple of lines should give you some ideas… Variables: CheckIn Time CheckOUt Time DiffHour Decimal DiffMin Decimal DiffTot Decimal

``````
CheckIn := 070000T;
CheckOUt := 082400T;

//DiffTot in Minutes
DiffTot := (CheckOUt - CheckIn) / (60 * 1000);
DiffHour := ROUND(DiffTot/60,1);
DiffMin := (DiffTot MOD 60);

//DiffTot in decimal hours
DiffTot := (CheckOUt - CheckIn) / (60 * 60 * 1000);
DiffHour := ROUND(DiffTot,1);
DiffMin := (DiffTot - DiffHour) * 60;

``````

You need to make sure from the beginning that the difference between CheckIn and CheckOut get calculated in the correct format… Saludos Nils

Hi Nils, Thanx a ton for the help that you have extended, but if you give value as 080000T to Checkin and 174500tT to Check out the Difftot value u get is 9.75 which is again wrong, as minutes cannot be 75 isnt it you get the DiffMin value as -45 which is correct. But then how would you get 9.45 which is the actual time difference between CheckIn & CheckOut. Iam totalling the values in a report, can definately use a variable to do that but then its not working as its expected to. It aint working… Regards Vishal

Vishal, you need to handle the difference in decimal values, because this way you can perform calculations with the time differences more easily - therefore 9,75 is correct. If later on you want to show these time differences on reports of forms, use the last two lines of the code I posted beforehand to adapt the format to HH:MM or handle these two values in seperate fields, basically convert the 0.75 into 45… Saludos Nils

Hi, there is a more easily way, as I think. As example I get your beforehand example. Day 1 No. of hours is 5.24 Day 1 No. of hours is 5.24 Day 1 No. of hours is 5.24 ------- Total 15.72 This value is in decimal. If you want this in HH:MM, just do this: transform 15.72 back to miliseconds: dec_ms := (15.72 * 60 * 60 * 1000) and finally time := 000000T + dec_ms; Now ‘time’ is: 15:43:12;