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.
strftime
equivalent, as well as including the "days" value not mentioned in the other question. – Catching.total_seconds()
(or its analog on earlier Python versions) instead of.seconds
: code example -- notice that02d
format is used – Hedgehop