python - 如何将包含 BST(英国夏令时)的时间戳字符串解析为时区感知的日期时间时间戳?
问题描述
我有格式为“25-Oct-20 1:00:00 AM GMT”和“25-Oct-20 12:00:00 AM BST”的时间戳,我希望将它们解析为时区感知的日期时间。我尝试使用 strptime 格式“%d-%b-%y %I:%M:%S %p %Z”
但是 datetime.strptime 的 %Z 参数不能将 BST 识别为有效输入,我无法弄清楚处理解析夏令时的“正确”方法。
解决方案
如果您从 中查看错误dateutil
,它会显示如下内容:
UnknownTimezoneWarning: tzname BST identified but not understood.
Pass `tzinfos` argument in order to correctly return a timezone-aware
datetime. In a future version, this will raise an exception.
换句话说,您可以传入将时区别名(如“BST”)映射到适当时区信息的字典。也许是这样的:
>>> import dateutil.parser
>>> import dateutil.tz
>>> BST = dateutil.tz.gettz('Europe/London')
>>> dateutil.parser.parse('25-Oct-20 12:00:00 AM BST', tzinfos={'BST': BST})
datetime.datetime(2020, 10, 25, 0, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/London'))
推荐阅读
- react-native - _reactNative.Keyboard.removeListener 不是函数
- python - 读取保存在 R 中的 Python 压缩二进制文件
- docker - 保持 Docker 运行 Azure CI/CD 管道
- python - 用于查找差异图像的opencv阈值问题
- java - 如何更改 JFrame 的图像图标?
- javascript - Nextjs Axios 仅适用于第一次调用
- python-3.x - 无法解决 - AttributeError:“超级”对象没有属性“__getattr__”
- docker - 复制 npmrc 时 Docker compose 失败
- sqlalchemy - FastAPI 覆盖数据库连接
- sql - 按 SQL 中的 Count 计算排序