我试图使用python脚本解析电子邮件的日期时间.
在我打开邮件时,邮件日期值如下所示...
from: abcd@xyz.com
to: def@xyz.com
date: Tue, Aug 28, 2012 at 1:19 PM
subject: Subject of that mail
Run Code Online (Sandbox Code Playgroud)
我正在使用代码
mail = email.message_from_string(str1)
#to = re.sub('</br>','',mail["To"])
to = parseaddr(mail.get('To'))[1]
sender = parseaddr(mail.get('From'))[1]
cc_is = parseaddr(mail.get('Cc'))[1]
date = mail["Date"]
print date
Run Code Online (Sandbox Code Playgroud)
使用python解析的相同邮件日期时间的输出如下所示,具有时间偏移.
Tue, 28 Aug 2012 02:49:13 -0500
Run Code Online (Sandbox Code Playgroud)
我在哪里实际上是希望的
Tue, Aug 28, 2012 at 1:19 PM
Run Code Online (Sandbox Code Playgroud)
我对这两个价值观的关系感到很困惑.任何人都可以帮我弄明白我需要同时进入邮件详细信息.
我是Python的新手,我试图做以下事情.
在PHP中,如果我们想转换日期,我们使用这样的东西:
$item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate));
Run Code Online (Sandbox Code Playgroud)
现在,我试图使用Python做同样的事情,但我无法理解这样做的确切方法.
任何人都可以通过将此行写入python来帮助我吗?
我试图将字符串转换为日期时间对象.我从新闻Feed获得的字符串采用以下格式:"星期四,2014年10月16日01:16:17 EDT"
我尝试使用datetime.strptime()来转换它.即
datetime.strptime('Thu, 16 Oct 2014 01:16:17 EDT','%a, %d %b %Y %H:%M:%S %Z')
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
回溯(最近一次调用最后一次):
文件"",第1行,在datetime.strptime('星期四,2014年10月16日01:16:17 EDT','%a,%d%b%Y%H:%M: %S%Z')
文件"C:\ Anaconda\lib_strptime.py",第325行,在_strptime(data_string,format)中)
ValueError:时间数据'星期四,2014年10月16日01:16:17 EDT'格式不匹配'%a,%d%b%Y%H:%M:%S%Z'
但是,如果我尝试没有"EDT"的字符串,它就可以了.即
datetime.strptime('Thu, 16 Oct 2014 01:16:17','%a, %d %b %Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解析"EDT"部分?
来自http://docs.python.org/library/time.html:
time.mktime(t):这是localtime()的反函数.它的参数是struct_time或完整的9元组(因为需要dst标志;如果它是未知的,则使用-1作为dst标志),它以本地时间而不是UTC表示时间.它返回一个浮点数,以便与time()兼容.如果输入值不能表示为有效时间,则会引发OverflowError或ValueError(这取决于Python或底层C库是否捕获到无效值).它可以生成时间的最早日期取决于平台.
这表示您需要在当地时间而不是UTC指定时间元组.但是,我想用UTC指定; 我不想在盒子上使用本地时区.
有什么方法可以从datetime到时间戳,其中时间被视为UTC?当我转换为时间戳和从时间戳转换时,我希望能够将所有内容保存在规范化的UTC表单(datetime对象)中.
我希望能够做这样的事情,让x和y出现相同:
y = datetime.datetime.utcfromtimestamp(time.mktime(x.timetuple()))
x = dateutil.parser.parse('Wed, 27 Oct 2010 22:17:00 GMT')
stamp = time.mktime(x.timetuple())
y = datetime.datetime.utcfromtimestamp(stamp)
x
datetime.datetime(2010, 10, 27, 22, 17, tzinfo=tzutc())
y
datetime.datetime(2010, 10, 28, 6, 17)
Run Code Online (Sandbox Code Playgroud)