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

问题描述 投票:0回答:3

我无法解析值

+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

python string python-3.x python-2.7 datetime
3个回答
2
投票

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

但是您可以使用

dateutil.parser
pandas
:

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
投票

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'

基于此,带有

:
的偏移量无效。您可能必须自己处理这个问题,或者使用另一个解析库


0
投票

看起来您的日期时间字符串遵循 ISO 8601 格式。我在类似的情况下使用了方法 datetime.fromisoformat(date_string) 并且它有效:

your_date = '2017-01-12T14:12:06.000-05:00'
parsed_result = datetime.fromisoformat(older_date)
print(parsed_result) # datetime.datetime(2017, 1, 12, 14, 12, 6, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400)))
© www.soinside.com 2019 - 2024. All rights reserved.