Python时间格式,三位小时

时间:2014-10-04 21:55:14

标签: python datetime date-format

如何将时间004:32:55解析为日期时间对象?这样:

datetime.strptime("004:32:55", "%H:%M:%S")

不起作用因为%H需要两位数。有没有办法添加第三个数字?

2 个答案:

答案 0 :(得分:2)

三个选项:

s = "004:32:55"


from datetime import datetime
datetime.strptime(s[1:], "%H:%M:%S") # from second 0 to the end


datetime.strptime(s, "0%H:%M:%S") # add 0 in formatting

from dateutil import parser # use dateutil 

parser.parse(s)

一天24小时,所以你可以划分并获得模数来计算出时间的天数和小时数,然后减去天数,这需要一些调整才能让你开始。

s = "04:32:55"

s = s.split(":",1)

hours, days = divmod(int(s[0]),24)

new_time = "{}:{}".format(hours,s[1])

past = datetime.now() - timedelta(days=days)
final = "{} {}".format(past.date().isoformat(),new_time)

print datetime.strptime(final,"%Y-%m-%d %H:%M:%S")

答案 1 :(得分:1)

我最终选择了一种更实用的方法,并将时间戳转换为秒:

hours = (0 if time_string.split(":")[0] == "000" else int(time_string.split(":")[0].lstrip("0")) * 3600)
mins = (0 if time_string.split(":")[1] == "00" else int(time_string.split(":")[1].lstrip("0")) * 60)
secs = (0 if time_string.split(":")[2] == "00" else int(time_string.split(":")[2].lstrip("0")))

return hours + mins + secs

使用datetime.timedelta(seconds=123)可以轻松转换回小时,分钟和秒。

修改

更好的解决方案(感谢Ben):

hours = int(time_string.split(":")[0]) * 3600
mins  = int(time_string.split(":")[1]) * 60
secs  = int(time_string.split(":")[2])

return hours + mins + secs