如何将时间004:32:55
解析为日期时间对象?这样:
datetime.strptime("004:32:55", "%H:%M:%S")
不起作用因为%H
需要两位数。有没有办法添加第三个数字?
答案 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