我有一个格式为的字符串,hours:minutes:seconds
但它不是一天中的时间,而是持续时间。例如,100:00:00
表示100 hours
。
我试图找到从当前时间偏移字符串中指定的时间量的时间。我可以使用正则表达式手动拉开时间字符串并将其转换为秒并将其添加到返回的浮点数中time.time()
,但是有一个time
函数可以做到这一点吗?
time.strptime()
函数格式似乎适用于时间/日期字符串,而不是任意字符串。
我有一个格式为的字符串,hours:minutes:seconds
但它不是一天中的时间,而是持续时间。例如,100:00:00
表示100 hours
。
我试图找到从当前时间偏移字符串中指定的时间量的时间。我可以使用正则表达式手动拉开时间字符串并将其转换为秒并将其添加到返回的浮点数中time.time()
,但是有一个time
函数可以做到这一点吗?
time.strptime()
函数格式似乎适用于时间/日期字符串,而不是任意字符串。
import datetime
dur_str = "100:00:00"
h, m, s = map(int, dur_str.split(':'))
dur = datetime.timedelta(hours=h, minutes=m, seconds=s)
不使用re
,但有时理解正则表达式比编写 python 需要更多的工作。
>>> import datetime
>>> time_str = "100:00:00"
>>> hours, minutes, seconds = [int(i) for i in time_str.split(":")]
>>> time_in_seconds = hours * 60 * 60 + minutes * 60 + seconds
>>> time_in_seconds
360000
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2012, 10, 2, 10, 24, 6, 639000)
>>> new_time = now + datetime.timedelta(seconds=time_in_seconds)
>>> new_time
datetime.datetime(2012, 10, 6, 14, 24, 6, 639000)
正如 nneonneo 指出datetime.timedelta()
的那样,接受hours
,minutes
和seconds
作为参数。所以你甚至可以做一些像这样愚蠢的事情(不推荐):
>>> datetime.timedelta(**{k:v for k,v in zip(["hours", "minutes", "seconds"], [int(i) for i in "100:00:00".split(":")])})
datetime.timedelta(4, 14400)