PYTHON 获取邮件发送时间
今天想用python管理126邮箱, 结果发现了时间转换问题,记录一下.
首先, 获取邮件时间
msg.get(“Date”)
‘24 Aug 2021 21:09:41 -0400’
本来挺简单的, 调用time.strptime() 就行。
匹配 ‘Aug ’ 可以用链接里说的%b, 最开始没看到, 找了好半天。
%b 本地简化的月份名称
问题是 最后的这个‘ -0400’ 出现了问题, 调查得知这是时区。北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800 参见 :世界协调时间(UTC)与中国标准时间,这个计算还挺好玩。
time.strptime() 里只说了
%Z 当前时区的名称
但是匹配出错, 最后改成了 %z, 至少能用了。链接里没说,这里提一下。
最后,可以简单的解决如下
time.strptime(msg.get(“Date”),’%d %b %Y %H:%M:%S %z’)
结果显示
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=24, tm_hour=21, tm_min=9, tm_sec=41, tm_wday=1, tm_yday=236, tm_isdst=-1)
对 tm_isdst 比较好奇,查了一下是表示是否是夏令时, -0400 时区本就表示纽约的夏令时。
参见 python tm_isdst = -1, 0, 1 datetime 的说明。
又碰到了烦人的东西,出现了
Tue, 24 Aug 2021 09:17:00 +0800 (CST)
Mon, 23 Aug 2021 09:35:26 +0000 (UTC)
Wed, 28 Jul 2021 00:51:23 +0000 (GMT)
这种格式的, 目前思路先判断下有没有, 有的话删掉。
- UTC :(Universal Time Coordinated)协调世界时,又称世界统一时间、世界标准时间、国际协调时间。
- GMT:(Greenwich Mean Time) 格林尼治标准时间,有多种,UTC是其中一种。
- CST 可以为如下4个不同的时区的缩写(惊呆,这是啥操作): 1. 美国中部时间:Central Standard Time (USA) UT-6:002. 澳大利亚中部时间:Central Standard Time (Australia) UT+9:303. 中国标准时间:China Standard Time UT+8:004. 古巴标准时间:Cuba Standard Time UT-4:00
版权归原作者 稚麟 所有, 如有侵权,请联系我们删除。