45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
|
import datetime
|
||
|
|
||
|
|
||
|
def _get_duration_components(duration):
|
||
|
days = duration.days
|
||
|
seconds = duration.seconds
|
||
|
microseconds = duration.microseconds
|
||
|
|
||
|
minutes = seconds // 60
|
||
|
seconds = seconds % 60
|
||
|
|
||
|
hours = minutes // 60
|
||
|
minutes = minutes % 60
|
||
|
|
||
|
return days, hours, minutes, seconds, microseconds
|
||
|
|
||
|
|
||
|
def duration_string(duration):
|
||
|
"""Version of str(timedelta) which is not English specific."""
|
||
|
days, hours, minutes, seconds, microseconds = _get_duration_components(duration)
|
||
|
|
||
|
string = '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)
|
||
|
if days:
|
||
|
string = '{} '.format(days) + string
|
||
|
if microseconds:
|
||
|
string += '.{:06d}'.format(microseconds)
|
||
|
|
||
|
return string
|
||
|
|
||
|
|
||
|
def duration_iso_string(duration):
|
||
|
if duration < datetime.timedelta(0):
|
||
|
sign = '-'
|
||
|
duration *= -1
|
||
|
else:
|
||
|
sign = ''
|
||
|
|
||
|
days, hours, minutes, seconds, microseconds = _get_duration_components(duration)
|
||
|
ms = '.{:06d}'.format(microseconds) if microseconds else ""
|
||
|
return '{}P{}DT{:02d}H{:02d}M{:02d}{}S'.format(sign, days, hours, minutes, seconds, ms)
|
||
|
|
||
|
|
||
|
def duration_microseconds(delta):
|
||
|
return (24 * 60 * 60 * delta.days + delta.seconds) * 1000000 + delta.microseconds
|