亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教通過電子郵件解析帶有時區的日期?

請教通過電子郵件解析帶有時區的日期?

素胚勾勒不出你 2019-09-05 12:05:31
通過電子郵件解析帶有時區的日期?我正在嘗試從電子郵件中檢索日期。起初它很容易:message = email.parser.Parser().parse(file)date = message['Date']print date我收到:'Mon, 16 Nov 2009 13:32:02 +0100'但我需要一個不錯的日期時間對象,所以我使用:datetime.strptime('Mon, 16 Nov 2009 13:32:02 +0100', '%a, %d %b %Y %H:%M:%S %Z')提升了ValueError, since %Z isn't format for +0100。但我在文檔中找不到適當的時區格式,只有這個%Z區域。有人可以幫助我嗎?
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

email.utils具有parsedate()RFC 2822格式的功能,據我所知,該功能并未棄用。

>>> import email.utils>>> import time>>> import datetime>>> email.utils.parsedate('Mon, 16 Nov 2009 13:32:02 +0100')(2009, 11, 16, 13, 32, 2, 0, 1, -1)>>> time.mktime((2009, 11, 16, 13, 32, 2, 0, 1, -1))1258378322.0>>> datetime.datetime.fromtimestamp(1258378322.0)datetime.datetime(2009, 11, 16, 13, 32, 2)

但是請注意,該parsedate方法沒有考慮時區,并且time.mktime總是期望這里提到的本地時間元組。

>>> (time.mktime(email.utils.parsedate('Mon, 16 Nov 2009 13:32:02 +0900')) ==... time.mktime(email.utils.parsedate('Mon, 16 Nov 2009 13:32:02 +0100'))True

因此,您仍然需要解析時區并考慮當地時差:

>>> REMOTE_TIME_ZONE_OFFSET = +9 * 60 * 60>>> (time.mktime(email.utils.parsedate('Mon, 16 Nov 2009 13:32:02 +0900')) +... time.timezone - REMOTE_TIME_ZONE_OFFSET)1258410122.0



查看完整回答
反對 回復 2019-09-07
?
森欄

TA貢獻1810條經驗 獲得超5個贊

用途email.utils.parsedate_tz(date)

msg=email.message_from_file(open(file_name))date=Nonedate_str=msg.get('date')if date_str:
    date_tuple=email.utils.parsedate_tz(date_str)
    if date_tuple:
        date=datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple))if date:
    ... # valid date found



查看完整回答
反對 回復 2019-09-07
  • 3 回答
  • 0 關注
  • 588 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號