使用 datetime.strptime() 的 '%z' 模式
我有一个代表日期的字符串文本,我完全能够解析它并将其转换为一个干净的日期时间对象:
date = "[24/Aug/2014:17:57:26"
dt = datetime.strptime(date, "[%d/%b/%Y:%H:%M:%S")
除了我无法使用此处指定的%z 模式捕获具有时区的整个日期字符串
date_tz = 24/Aug/2014:17:57:26 +0200
dt = datetime.strptime(date, "[%d/%b/%Y:%H:%M:%S %z]")
>>> ValueError: 'z' is a bad directive in format '[%d/%b/%Y:%H:%M:%S %z]'
因为正如这个错误报告所说
strftime() 是按平台实现的
我确切地说,天真的 tzinfo 指令 '%Z' 没有这样的问题
解决方法:将 tzinfo 字符串转换为 tzinfo 对象
我可以通过使用dateutil模块将 GST 时间格式字符串转换为 tzinfo 对象 [如建议的此处] [4] 完美地做出以下解决方法,然后将tzinfo 插入 datetime 对象
问题:让 %z 可用于我的平台?
但是由于我显然需要 %z 模式来进行进一步的项目,所以我想找到一个解决方案来避免这种解决方法并使用外部模块来完成这个简单的任务。你能建议我读一下吗?我认为较新版本的 python(我在 2.7 上)可以处理它,但我宁愿现在不为这个小小的但至关重要的细节更改我的版本。
[编辑]
好吧,看到评论让我重新提出了我的问题,如何在不知道语言环境时间的情况下使用 strptime() 解析电子邮件时区指示符?