Friday, February 18, 2011

Time Difference Calculation BSFN

How to calculate time difference betweens two different times

How to get time difference between two times in HH:MM:SS format? Is there any business function available?
- (IN) FC_mnTime_A
- (IN) FC_mnTime_B
- (OUT) FC_mnTime_BetweenTime_Seconds
- (OUT) FC_mnTime_BetweenTime_HHMMSS
Solution
Currently, there is no available business function to get time difference. The following event rules logic can be considered :
1. Convert TimeA from HHMMSS into Seconds (Time A)
2. Convert TimeA from HHMMSS into Seconds (Time B)
3. Subtract From A to B to calculate time Between
4. Convert Seconds to HHMMSS format


*** Code Detail ***

1. Convert TimeA from HHMMSS into Seconds (Time A)
If FC_mnTime_A is not equal to <Zero>
Or FC_mnTime_A is not equal to <Null>
   VA evt_mnHours01 = ([FC_mnTime_A]/10000)-(mod([FC_mnTime_A],10000)/10000)
   VA evt_mnMinSec01 = mod([FC_mnTime_A],10000)
   VA evt_mnMinutes01 = ([VA evt_mnMinSec01]/100)-(mod([VA evt_mnMinSec01],100)/100)
   VA evt_mnSeconds01 = [VA evt_mnMinSec01]-([VA evt_mnMinutes01]*100)
   VA evt_mnTimeInSeconds01 = ((([VA evt_mnHours01]*60)*60)+([VA evt_mnMinutes01]*60))+[VA evt_mnSeconds01]
End If

2. Convert TimeA from HHMMSS into Seconds (Time B)
If FC_mnTime_B is not equal to <Zero>
Or FC_mnTime_B is not equal to <Null>
   VA evt_mnHours02 = ([FC_mnTime_B]/10000)-(mod([FC_mnTime_B],10000)/10000)
   VA evt_mnMinSec02 = mod([FC_mnTime_B],10000)
   VA evt_mnMinutes02 = ([VA evt_mnMinSec02]/100)-(mod([VA evt_mnMinSec02],100)/100)
   VA evt_mnSeconds02 = [VA evt_mnMinSec02]-([VA evt_mnMinutes02]*100)
   VA evt_mnTimeInSeconds02 = ((([VA evt_mnHours02]*60)*60)+([VA evt_mnMinutes02]*60))+[VA evt_mnSeconds02]
End If

3. Subtract From A to B to calculate time Between
FC_mnTime_BetweenTime_Seconds = abs(([VA evt_mnTimeInSeconds01]-[VA evt_mnTimeInSeconds02]))

4. Convert Seconds to HHMMSS format
VA evt_mnSeconds_Output = mod([FC_mnTime_BetweenTime_Seconds],60)
VA evt_mnHourMinute_output = [FC_mnTime_BetweenTime_Seconds]-[VA evt_mnSeconds_Output]
VA evt_mnMinute_Output = mod(([VA evt_mnHourMinute_output]/60),60)
VA evt_mnHour_Output = (([FC_mnTime_BetweenTime_Seconds]-([VA evt_mnMinute_Output]*60))-[VA evt_mnSeconds_Output])/3600
FC_mnTime_BetweenTime_HHMMSS = [VA evt_mnHour_Output]*10000+[VA evt_mnMinute_Output]*100+[VA evt_mnSeconds_Output]

*** End of Code ***



No comments:

Post a Comment