我正在捕获电子邮件到电子邮件日期的标题,格式如下:
Fri, 27 Mar 2020 12:05:17 +0000 (UTC)
我需要转换为格式:YYYY-MM-DD HH:MM
我尝试使用datetime.strptime
函数,但没有成功。
有人能帮我吗?当我现在开始学习Python时,我受到了打击!
我会使用python dateutil将字符串转换为datetime对象,然后使用strftime输出所需格式的字符串。
import datetime
from dateutil import parser
x = parser.parse("Fri, 27 Mar 2020 12:05:17 +0000 (UTC)")
print(x.strftime("%Y-%m-%d %H:%M"))
输出应该是
2020-03-27 12:05
如果不需要依赖关系,则不使用datetime
库的自定义实现。
date_given = "Fri, 27 Mar 2020 12:05:17 +0000 (UTC)"
month ={'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'}
_,d,m,y,t,_,_ = date_given.split(' ')
print(str(y)+"-"+str(month[m])+'-'+str(d)+' '+str(t[:-3]))
会给你2020-03-27 12:05
标准库的电子邮件包提供了解析RFC5322格式日期时间字符串的工具。
from email.headerregistry import DateHeader
kwds = {} # This dict is modified in-place
DateHeader.parse('Fri, 27 Mar 2020 12:05:17 +0000 (UTC)', kwds)
kwds['datetime']
datetime.datetime(2020, 3, 27, 12, 5, 17, tzinfo=datetime.timezone.utc)
虽然DateHeader是解析日期标头的现代工具,但传统的*函数email.utils.parsedate_to_datetime更容易使用
from email.utils import parsedate_to_datetime
parsedate_to_datetime('Fri, 27 Mar 2020 12:05:17 +0000 (UTC)')
datetime.datetime(2020, 3, 27, 12, 5, 17, tzinfo=datetime.timezone.utc)
*对于传统API标题下的utils
模块,DateHeader
内部使用parsedate_to_datatime来解析日期时间字符串,因此它可能不会很快消失。