我有一个来自 Blackberry IPD 备份的 CSV 转储文件,它是使用 IPDDump 创建的。
这里的日期/时间字符串看起来像这样
(其中 EST
是澳大利亚时区):
Tue Jun 22 07:46:22 EST 2010
我需要能够在 Python 中解析这个日期。起初,我尝试使用 datettime 中的 strptime()
函数。
>>> datetime.datetime.strptime('Tue Jun 22 12:10:20 2010 EST', '%a %b %d %H:%M:%S %Y %Z')
但是,由于某种原因,返回的 datetime
对象似乎没有任何关联的 tzinfo
。
我确实阅读了 this page显然 datetime.strptime
默默地丢弃了 tzinfo
,但是,我检查了文档,但我找不到任何有此效果的文档 here .
有什么方法可以让 strptime()
与时区配合得很好?
最佳答案
我建议使用 python-dateutil .到目前为止,它的解析器已经能够解析我向它抛出的所有日期格式。
>>> from dateutil import parser
>>> parser.parse("Tue Jun 22 07:46:22 EST 2010")
datetime.datetime(2010, 6, 22, 7, 46, 22, tzinfo=tzlocal())
>>> parser.parse("Fri, 11 Nov 2011 03:18:09 -0400")
datetime.datetime(2011, 11, 11, 3, 18, 9, tzinfo=tzoffset(None, -14400))
>>> parser.parse("Sun")
datetime.datetime(2011, 12, 18, 0, 0)
>>> parser.parse("10-11-08")
datetime.datetime(2008, 10, 11, 0, 0)
等等。不用处理 strptime()
格式的废话......只要给它一个日期,它就会做正确的事。
关于python - 使用 strptime() 解析日期/时间字符串时如何保留时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305413/