Originally posted by: denzer
First of all, thank you to everyone who provided feed back. However, for my purposes I went with what I hope is a much more robust calculator, here is what I settled on:
= /* This is the elapsed time in days~hours~minutes~seconds in a text field. You can then use the word command to extract and convert to seconds as needed. The timestamp inputs must be CCYYMMDDHH24MMSS3-3 in the start and end text fields. */
NumberToText ( //days
If (Mid (StartTS:Out, 9, 9) <= Mid (EndTS:Out, 9, 9) //Determining if 24 hours has passed?
, DateToNumber (TextToDate (Left (EndTS:Out, 8))) - DateToNumber (TextToDate (Left (StartTS:Out, 8)))
, DateToNumber (TextToDate (Left (EndTS:Out, 8))) - 1 - DateToNumber (TextToDate (Left (StartTS:Out, 8)))
))
+ "~" //hours
+ NumberToText (
If (Mid (StartTS:Out, 9, 9) <= Mid (EndTS:Out, 9, 9) //Across days check
, If (Mid (StartTS:Out, 11, 7) <= Mid (EndTS:Out, 11, 7) //Does the period of minutes within constitute a full hour?
, TextToNumber (Mid (EndTS:Out, 9, 2)) - TextToNumber (Mid (StartTS:Out, 9, 2))
, TextToNumber (Mid (EndTS:Out, 9, 2)) - 1 - TextToNumber (Mid (StartTS:Out, 9, 2)))
, If (Mid (StartTS:Out, 11, 7) <= Mid (EndTS:Out, 11, 7) //Does the period of minutes within constitute a full hour?
, TextToNumber (Mid (EndTS:Out, 9, 2)) + 24 - TextToNumber (Mid (StartTS:Out, 9, 2))
, TextToNumber (Mid (EndTS:Out, 9, 2)) + 24 - 1 - TextToNumber (Mid (StartTS:Out, 9, 2)))
))
+ "~" //minutes
+ NumberToText (
If (Mid (StartTS:Out, 11, 7) <= Mid (EndTS:Out, 11, 7) //Across hours check
, If (Mid (StartTS:Out, 13, 5) <= Mid (EndTS:Out, 13, 5) //Does the period of seconds within constitute a full minute?
, TextToNumber (Mid (EndTS:Out, 11, 2)) - TextToNumber (Mid (StartTS:Out, 11, 2))
, TextToNumber (Mid (EndTS:Out, 11, 2)) - 1 - TextToNumber (Mid (StartTS:Out, 11, 2)))
, If (Mid (StartTS:Out, 13, 5) <= Mid (EndTS:Out, 13, 5)
, TextToNumber (Mid (EndTS:Out, 11, 2)) + 60 - TextToNumber (Mid (StartTS:Out, 11, 2))
, TextToNumber (Mid (EndTS:Out, 11, 2)) + 60 - 1 - TextToNumber (Mid (StartTS:Out, 11, 2)))
))
+ "~" // seconds
+ NumberToText (
If (Mid (StartTS:Out, 13, 5) <= Mid (EndTS:Out, 13, 5) //Across minutes check
, TextToNumber (Mid (EndTS:Out, 13, 5)) - TextToNumber (Mid (StartTS:Out, 13, 5))
, TextToNumber (Mid (EndTS:Out, 13, 5)) + 60000 - TextToNumber (Mid (StartTS:Out, 13, 5))
) / 1000)
#IBM-Websphere-Transformation-Extender#IBMSterlingTransformationExtender#DataExchange