strptime无法解决时区值+02:00

时间:2018-05-23 13:04:17

标签: python string python-3.x python-2.7 datetime

我无法解析价值+02:00

以下版本适用于时区-0500

result = datetime.datetime.strptime('2017-01-12T14:12:06.000-0500','%Y-%m-%dT%H:%M:%S.%f%z')
print(result)

2017-01-12 14:12:06-05:00

如果时区为-05:00,则无法正常工作:

result = datetime.datetime.strptime('2017-01-12T14:12:06.000-05:00','%Y-%m-%dT%H:%M:%S.%f%z')
print(result)

2017-01-12 14:12:06-05:00

2 个答案:

答案 0 :(得分:2)

-05:00模块不支持格式datetime的时区,即冒号。

但您可以使用dateutil.parserpandas

from dateutil import parser
import pandas as pd

x = '2017-01-12T14:12:06.000-05:00'

res1 = parser.parse(x)
res2 = pd.to_datetime(x).to_pydatetime()

print(res1)  # 2017-01-12 14:12:06-05:00
print(res2)  # 2017-01-12 19:12:06

答案 1 :(得分:1)

documentation for strptime%z格式说明符:

UTC offset in the form +HHMM or -HHMM 

如果我在Python shell(Python 3.6.5)中运行第二个示例,我会得到一个ValueError:

ValueError: time data '2017-01-12T14:12:06.000-05:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

基于此,: in的偏移无效。您可以自己处理,或使用其他解析库