如何将持续时间转换为'%H:%M:%S.%f'时间格式,而不是天数

时间:2019-09-02 11:07:09

标签: django python-3.x

我需要将天转换为小时,分钟,秒

def get_working_hours(self, obj):
    return datetime.strptime(str(obj.working_hours), '%H:%M:%S.%f').time()

ValueError:时间数据'1天,7:06:38.340741'与格式'%H:%M:%S.%f'不匹配

1 个答案:

答案 0 :(得分:0)

简短答案:将其保留为timedelta对象。

obj.working_hourstimedelta object [Python-doc]。确实:

>>> str(timedelta(days=1, hours=7, minutes=6, seconds=38, microseconds=340741))
'1 day, 7:06:38.340741'

因此,这里的总小时数为31。您无法使用time对象来表示小时数。您可能应该只将其保留为timedelta。例如,您可以使用以下方法计算小时数:

>>> td.total_seconds()//3600  # hours
31.0
>>> (td.total_seconds() //60) % 60  # minutes
6.0
>>> td.total_seconds() % 60  # seconds
38.340741000007256

但是time对象只能有00:00:00.00000023:59:59.999999范围内的时间。因此,您不能在此处使用time对象。