I have two datetime
objects. I need to calculate the timedelta
between them and then show the output in a specific format.
Alpha_TimeObj = datetime.datetime(int(AlphaTime.strftime('%Y')), int(AlphaTime.strftime('%m')), int(AlphaTime.strftime('%d')), int(AlphaTime.strftime('%H')), int(AlphaTime.strftime('%M')), int(AlphaTime.strftime('%S')))
Beta_TimeObj = datetime.datetime(int(BetaTime.strftime('%Y')), int(BetaTime.strftime('%m')), int(BetaTime.strftime('%d')), int(BetaTime.strftime('%H')), int(BetaTime.strftime('%M')), int(BetaTime.strftime('%S')))
Turnaround_TimeObj = Beta_TimeObj - Alpha_TimeObj
An example of this Turnaround_TimeObj
time delta is "2 days, 22:13:45". I want to format the output, but I am unable to do so.
print Turnaround_TimeObj.strftime('%H hrs %M mins %S secs')
doesn't work.
I know one way of doing this will be to convert it to seconds and then divmoding to get the required formatting.
As in:
totalSeconds = Turnaround_TimeObj.seconds
hours, remainder = divmod(totalSeconds, 3600)
minutes, seconds = divmod(remainder, 60)
print '%s:%s:%s' % (hours, minutes, seconds)
But I was wondering if I can do it in a single line using any date time function like strftime
.
Actually converting to seconds doesn't work either. If I convert the time delta "1 day, 3:42:54" to seconds using:
totalSeconds = Turnaround_TimeObj.seconds
The totalSeconds
value is shown as 13374 instead of 99774. i.e. it's ignoring the "day" value.