python - 为什么 %z 不被 python 的 strptime 支持?

标签 python datetime timezone strptime python-datetime

>>> datetime.strptime('2014-02-13 11:55:00 -0800', '%Y-%m-%d %H:%M:%S %z')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
    (bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S %z'

我知道它不受支持,但不知道为什么。似乎支持这一点并不难。和'Offset from UTC ' 不像时区缩写那样含糊不清。

最佳答案

直到 Python 3.2,Python 的datetime 模块没有timezone() 对象。它通过提供 datetime.tzinfo() abstract base class 来支持提供时区的第 3 方库, 但没有包含时区对象。没有时区对象,也不支持解析时区偏移量。

从 Python 3.2 开始,支持 z,因为该版本(及更高版本)添加了 datetime.timezone() type :

>>> import datetime
>>> datetime.datetime.strptime('2014-02-13 11:55:00 -0800', '%Y-%m-%d %H:%M:%S %z')
datetime.datetime(2014, 2, 13, 11, 55, tzinfo=datetime.timezone(datetime.timedelta(-1, 57600)))
>>> _.tzinfo
datetime.timezone(datetime.timedelta(-1, 57600))

关于python - 为什么 %z 不被 python 的 strptime 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940551/

相关文章:

python - 多次执行时OpenCV 'cvtColor'改变颜色和饱和度(python)

django - Django 中带时区的 Unix 时间戳到日期时间

python - 无法在 Amazon Linux : invalid syntax 上安装 gcloud

python - 使用 pymongo 创建时区感知 ISODate

c# - 从字符串 c# 中解析 DateTime

c# - Entity Framework 日期时间和 UTC

timezone - 印度正确的 tz 数据库时区是什么?

python - pytz - 时区偏移量与公开信息不一致

python - 拆分数据框中的单元格

python - 等待任何 future 的异步