我无法解析值
+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
-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
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'
基于此,带有
:
的偏移量无效。您可能必须自己处理这个问题,或者使用另一个解析库
看起来您的日期时间字符串遵循 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)))