使用 datetime.strptime() 的 '%z' 模式
我有一个字符串表示日期,我可以很好地解析它并将其转换为干净的 datetime 对象:
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]'
因为就像这个bug报告所说的:
strftime()是按平台实现的
我要强调的是,使用简单的tzinfo指令'%Z'并不会出现这样的问题。
解决方法:将tzinfo字符串转换为tzinfo对象
我可以通过使用dateutil模块中建议的方法,将GST时间格式的字符串转换为tzinfo对象,并然后将其插入到datetime对象中(点击此处)来实现以下解决方法。
问题:如何使%z在我的平台上可用?
但因为我显然需要%z模式来进行进一步的项目,所以我想找到一个避免使用外部模块完成这个简单任务的解决方案。 你能给我提供一些阅读材料吗?我想新版的Python(我用的是2.7)应该可以处理它,但我不想因为这个小但关键的细节而现在更改我的版本。
[编辑]
好吧,看到评论让我重新表述我的问题:如何使用strptime()解析电子邮件时区指示符,而不必了解本地时间?
pytz
-> http://pytz.sourceforge.net/ - Gohn67