解析python中的时间字符串

时间:2012-10-02 01:17:45

标签: python

  

可能重复:
  How to construct a timedelta object from a simple string

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

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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()接受hoursminutesseconds作为参数。所以你甚至可以做一些像这样的傻事(不推荐):

>>> 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)