为了账号安全,请及时绑定邮箱和手机立即绑定

Python strptime()和时区?

Python strptime()和时区?

慕斯709654 2019-07-19 18:48:15
Python strptime()和时区?我有一个CSV文件从一个黑莓IPD备份,创建使用IPDDump。此处的日期/时间字符串看起来如下(其中EST是澳大利亚的时区):Tue Jun 22 07:46:22 EST 2010我需要能够用Python解析这个日期。起初,我试图使用strptime()函数从日期时间开始。>>> datetime.datetime.strptime('Tue Jun 22 12:10:20 2010 EST', '%a %b %d %H:%M:%S %Y %Z')但是,由于某种原因,datetime返回的对象似乎没有tzinfo与此相关。我确实读过本页显然datetime.strptime默默丢弃tzinfo但是,我检查了文档,却找不到任何有文档记录的东西。这里.我已经能够使用第三方Python库解析日期,丁香醇,但是我仍然好奇我是如何使用内置的strptime()不对?有没有办法strptime()好好利用时区?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我建议使用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()无稽之谈.。只要在它上扔个约会,它就会做正确的事情。

更新:哎呀。我漏掉了你之前提到的你用过的问题dateutil对此很抱歉。但是,我希望这个答案对于那些遇到这个问题的人来说还是有用的,当他们有日期解析问题的时候,并且看到了这个模块的效用。


查看完整回答
反对 回复 2019-07-19
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您的时间字符串类似于RFC 2822(电子邮件中的日期格式,http标头)..您可以只使用stdlib解析它:

>>> from email.utils import parsedate_tz>>> parsedate_tz('Tue Jun 22 07:46:22 EST 2010')(2010, 6, 22, 7, 46, 22, 0, 1, -1, -18000)

请参阅为各种Python版本生成时区感知的datetime对象的解决方案:从电子邮件中解析带有时区的日期.

以这种格式,EST在语义上等同于-0500..不过,总的来说,仅用时区缩写来唯一地标识时区是不够的。.


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 1558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信