从字符串日期时间获取具有特殊字符的时间

时间:2017-11-09 18:47:27

标签: python datetime

我正在尝试使用以下代码从此字符串2017-11-07 16:56:34.787-08获取时间:

from datetime import datetime
my_string = '2017-11-07 16:56:34.787-08'
dt = datetime.strptime(my_string, "%Y-%m-%d %H:%M:%S.%f")

然而,my_string稍微有点独特,因为它附加了后面附加的-08,有时它可能是3位数形式,例如。 -123 使用split(' - ')而不是做一个迂回方法,然后删除最后一个元素,是否有更好的方法可以直接获得时间?

1 个答案:

答案 0 :(得分:1)

我建议使用rsplit(),这样可以避免join() split() strptime()结果(因为日期包含其他破折号)。

from datetime import datetime

my_string = '2017-11-07 16:56:34.787-08'
date_string, _ = my_string.rsplit('-', 1)
dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S.%f")

print(dt)
# 2017-11-07 16:56:34.787000

无法使用must match字符忽略,日期字符串和格式{{3}}:

  

如果 string [...]在解析后有过多的数据,则会引发ValueError