将gmail时间戳转换为strptime

时间:2016-01-22 20:23:35

标签: python datetime timestamp

我有这个读数星期二,2016年1月19日16:12:18 -0800(太平洋标准时间)





我正在存储电子邮件mongo和我想把它转换成python时间对象,所以我可以根据电子邮件的时间查询Mongo。





这样做的最佳方法是什么?





感谢

&#XA!;

4 个答案:

答案 0 :(得分:2)

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))

答案 1 :(得分:0)

一种方法是使用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,了解有关这些格式字符串如何具体运作的指南,以便您可以自行构建!

答案 2 :(得分:0)

要从电子邮件中解析时间字符串,您可以使用stdlib中的email包:

>>> 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"。要获得可以传递给MongoDB的UTC时间:

>>> 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: parsing date with timezone from an email

答案 3 :(得分:0)

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')