我有这样的读出Tue, 19 Jan 2016 16:12:18 -0800 (PST)
转换的Gmail时间戳strptime
我存储在蒙戈电子邮件和我想这个转换成一个Python时间对象,所以我可以基于电子邮件的时间查询蒙戈。
这样做的最好方法是什么?
谢谢!
我有这样的读出Tue, 19 Jan 2016 16:12:18 -0800 (PST)
转换的Gmail时间戳strptime
我存储在蒙戈电子邮件和我想这个转换成一个Python时间对象,所以我可以基于电子邮件的时间查询蒙戈。
这样做的最好方法是什么?
谢谢!
一种方法是使用datetime模块的strptime功能,
即
import datetime
timestamp = "Tue, 19 Jan 2016 16:12:18 -0800 (PST)"
dt = datetime.datetime.strptime(timestamp, "%a, %d %b %Y %H:%M:%S %z (%Z)")
请Python's datetime module读了为找到指导这些格式字符串如何工作,以便您可以建立自己的!
python-dateutil
会让事情变得简单:
>>> from dateutil.parser import parse
>>> parse("Tue, 19 Jan 2016 16:12:18 -0800 (PST)")
datetime.datetime(2016, 1, 19, 16, 12, 18, tzinfo=tzoffset(u'PST', -28800))
我做'须藤PIP安装python-dateutil'但我仍然得到'ImportError:没有名为dateutil.parser的模块' –
@MorganAllen确保你将它安装到正确的环境中。你在使用虚拟环境吗? – alecxe
我很新的工程,所以不是我所知道的?我通常只是打开终端...如何检查我是否在虚拟环境中? –
为了解析从电子邮件中的字符串,你可以使用email
包从STDLIB:
>>> from email.utils import parsedate_tz, mktime_tz
>>> timestamp = mktime_tz(parsedate_tz('Tue, 19 Jan 2016 16:12:18 -0800 (PST)'))
其中timestamp
是"seconds since the Epoch"。要获得UTC时间,这可以通到MongoDB的:
>>> from datetime import datetime, timedelta
>>> utc_time = datetime(1970, 1, 1) + timedelta(seconds=timestamp)
>>> utc_time
datetime.datetime(2016, 1, 20, 0, 12, 18)
的Python 3.2+
from datetime import datetime
datetime.strptime("Tue, 19 Jan 2016 16:12:18 -0800 (PST)"[:31],
'%a, %d %b %Y %H:%M:%S %z')
太棒了。我正在查看文档 - 我发现%z是UTC forfeset,但即时获取错误“ValueError:'z'是格式为'%a,%d%b%Y%H: %M:%S%z(%Z)''。任何想法为什么? –
你使用Python <3.2吗?根据[这](https://bugs.python.org/issue6641)错误报告和[this](https://stackoverflow.com/questions/2609259/converting-string-to-datetime-object-in-python )堆栈溢出后,似乎在3.2之前的Python中,这是在系统级别上实现的,所以如果你的系统不支持C中的那个指令,它可能不起作用。 –
我使用的是2.7.8版本...因此可以解释它 –