我有这个读数星期二,2016年1月19日16:12:18 -0800(太平洋标准时间)
我正在存储电子邮件mongo和我想把它转换成python时间对象,所以我可以根据电子邮件的时间查询Mongo。


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


感谢
&#XA!;答案 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)
答案 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')