gpt4 book ai didi

python - 日期时间 : conversion from string with timezone name not working

转载 作者:太空狗 更新时间:2023-10-29 21:06:42 27 4
gpt4 key购买 nike

我有以下字符串 "2017-03-30 08:25:00CET" 我想将其转换为 datetime tz-aware 对象。

根据this SO question , 从 python 3.2 开始,它可以只使用 datetime 模块来完成。此外,来自 documentation , 我明白了

%z |  UTC offset in the form +HHMM or -HHMM (empty string if the object is naive). |  (empty), +0000, -0400, +1030
%Z | Time zone name (empty string if the object is naive). | (empty), UTC, EST, CST

所以我尝试以下

datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%Z')

我没有得到任何错误,但是我得到的对象不是 tz 感知的

datetime.datetime(2017, 3, 30, 8, 25)

另一方面,如果我将我的字符串转换为 "2017-03-30 08:25:00+0200",然后使用

将其转换为对象

datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%z')

我确实得到了一个 tz 感知的日期时间:

datetime.datetime(2017, 3, 30, 8, 25, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))

关于为什么它适用于 %z 但不适用于 %Z 的任何想法?我做错了什么?

最佳答案

tzinfo给出的信息来看,%Z 无法按照您输入 "UTC" 之类的字符串的方式工作,它将返回具有正确时区的日期时间实例。

pytz为您的问题提供可能的解决方案。但是,文档说,不能保证您的时区会被 datetime 识别,并建议尽可能长时间地使用 UTC。

使用 pytz 的解决方案:

from datetime import datetime
from pytz import timezone
dep_dt = '2017-03-30 08:25:00CET'
dt = datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%Z')
timezone(dep_dt[19:]).localize(dt)

输出:

datetime.datetime(2017, 3, 30, 8, 25, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>)

关于python - 日期时间 : conversion from string with timezone name not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com