如何使用Python以秒为单位转换数据类型(dd:hh:mm:ss)“ 1天,01:00:00”

时间:2019-06-19 14:59:36

标签: python

我正在尝试使用以下代码行以秒为单位转换数据:“ 1天,01:00:00”:

import datetime

time_1 = '1 day, 01:00:00'

h, m, s = str(time_1).split(':')
seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
print(seconds)

但是我得到了这个错误:

>>> ValueError: invalid literal for int() with base 10: '1 day, 01'

我可以从变量“ time_1”中删除“ 1 day”,但不包括天数。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

在用“:”分割之前,您需要先用逗号分割并加上结尾部分, 如果您不这样做,那么h将设置为"1 day, 01"

time_aux = time_1.split(',')[1]
h, m, s = time_aux.split(':')

答案 1 :(得分:0)

使用split分割您的初始字符串

result = [x.strip() for x in time.split(',')]

然后将第一项和第一个字符乘以64200,将其转换为秒,然后像您一样转换小时,分钟和秒。

seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
total_seconds = int(result[0][1])*64200 + seconds 

答案 2 :(得分:0)

您可以使用re解析时间字符串:

import datetime
import re

time_1 = '1 day, 01:00:00'

for (days, t) in re.findall(r'(?:(\d+)\s+days?)?,?\s*([\d:]+)', time_1):
    h, m, s = str(t).split(':')
    seconds = datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()
    if days:
        seconds = seconds + datetime.timedelta(days=int(days)).total_seconds()
    print(int(seconds))

打印:

90000