5

可能重复:
如何从一个简单的字符串构造一个 timedelta 对象

我有一个格式为的字符串,hours:minutes:seconds但它不是一天中的时间,而是持续时间。例如,100:00:00表示100 hours

我试图找到从当前时间偏移字符串中指定的时间量的时间。我可以使用正则表达式手动拉开时间字符串并将其转换为秒并将其添加到返回的浮点数中time.time(),但是有一个time函数可以做到这一点吗?

time.strptime()函数格式似乎适用于时间/日期字符串,而不是任意字符串。

4

2 回答 2

7
import datetime
dur_str = "100:00:00"
h, m, s = map(int, dur_str.split(':'))
dur = datetime.timedelta(hours=h, minutes=m, seconds=s)
于 2012-10-02T01:36:54.800 回答
1

不使用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,minutesseconds作为参数。所以你甚至可以做一些像这样愚蠢的事情(不推荐):

>>> 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)
于 2012-10-02T01:26:54.280 回答