将字符串转换为时间格式超过 24 小时格式 ( [h]:mm:ss ) 而不增加日期
Convert string to time format more than 24 hours format ( [h]:mm:ss ) without incrementing day
我需要将字符串转换为小时格式的时间。我尝试使用下面的但我没有得到我期望的结果。
inp_string = "70:30:00"
print(datetime.strptime(inp_string, "%H:%M:%S").time())
为此,我收到以下错误:
ValueError: time data '70:30:00' does not match format '%H:%M:%S'
如果我输入的小时数低于 24,我会得到很好的结果;
new = '23:30:00'
print("value:",datetime.strptime(new, "%H:%M:%S").time())
print(type(datetime.strptime(new, "%H:%M:%S").time()))
输出
value: 23:30:00
<class 'datetime.time'>
像这样,我必须将一个字符串转换成小时数大于 24 的时间格式。
inp_string = "70:30:00"
new_hour=(int(inp_string[0:2]))%24
new_string=str(new_hour)+(inp_string[2:8])
print(new_string)
print(datetime.strptime(new_string, "%H:%M:%S").time())
您需要编写自己的解析器来将您的 str
转换为 timedelta
(或者找一个可以为您完成此操作的库)。
假设你的持续时间总是像 HH:MM:SS
,你可以使用这样的东西:
import datetime
def parse_duration(s):
return list(map(lambda x: int(x), s.split(":")))
inp1 = "70:30:00"
[h1, m1, s1] = parse_duration(inp1)
d1 = datetime.timedelta(hours=h1, minutes=m1, seconds=s1)
inp2 = "00:30:00"
[h2, m2, s2] = parse_duration(inp2)
d2 = datetime.timedelta(hours=h2, minutes=m2, seconds=s2)
res = d1 + d2
# Format res however you like
我需要将字符串转换为小时格式的时间。我尝试使用下面的但我没有得到我期望的结果。
inp_string = "70:30:00"
print(datetime.strptime(inp_string, "%H:%M:%S").time())
为此,我收到以下错误:
ValueError: time data '70:30:00' does not match format '%H:%M:%S'
如果我输入的小时数低于 24,我会得到很好的结果;
new = '23:30:00'
print("value:",datetime.strptime(new, "%H:%M:%S").time())
print(type(datetime.strptime(new, "%H:%M:%S").time()))
输出
value: 23:30:00
<class 'datetime.time'>
像这样,我必须将一个字符串转换成小时数大于 24 的时间格式。
inp_string = "70:30:00"
new_hour=(int(inp_string[0:2]))%24
new_string=str(new_hour)+(inp_string[2:8])
print(new_string)
print(datetime.strptime(new_string, "%H:%M:%S").time())
您需要编写自己的解析器来将您的 str
转换为 timedelta
(或者找一个可以为您完成此操作的库)。
假设你的持续时间总是像 HH:MM:SS
,你可以使用这样的东西:
import datetime
def parse_duration(s):
return list(map(lambda x: int(x), s.split(":")))
inp1 = "70:30:00"
[h1, m1, s1] = parse_duration(inp1)
d1 = datetime.timedelta(hours=h1, minutes=m1, seconds=s1)
inp2 = "00:30:00"
[h2, m2, s2] = parse_duration(inp2)
d2 = datetime.timedelta(hours=h2, minutes=m2, seconds=s2)
res = d1 + d2
# Format res however you like