Python 将日期字符串转换为YYYYMMDD
我在这个表单中有一组日期字符串:-Python 将日期字符串转换为YYYYMMDD,python,Python,我在这个表单中有一组日期字符串:- 30th November 2009 31st March 2010 30th September 2010 我希望他们像这样:- YYYYMMDD 目前我正在这样做:- parsed_date = "30th November 2009" part = parsed_date.split(' ') daymonth = part[0].strip(string.ascii_letters) mytime = daymonth+" "+pa
30th November 2009
31st March 2010
30th September 2010
我希望他们像这样:-
YYYYMMDD
目前我正在这样做:-
parsed_date = "30th November 2009"
part = parsed_date.split(' ')
daymonth = part[0].strip(string.ascii_letters)
mytime = daymonth+" "+part[1]+" "+part[2]
time_format = "%d %B %Y"
cdate = time.strptime(mytime, time_format)
newdate = str(cdate[0])+str(cdate[1])+str(cdate[2])
这是可行的,但我相信有更好的方法…试试:
输出:
20091130
20100331
20100930
或者,如果要使用标准的datetime
模块执行此操作:
from datetime import datetime
dates = ['30th November 2009', '31st March 2010', '30th September 2010']
for date in dates:
part = date.split()
print datetime.strptime('%s %s %s' % (part[0][:-2]), part[1], part[2]), '%d %B %Y').strftime('%Y%m%d')
您几乎可以通过以下方法的组合来实现这一点 我们面临的问题是,内置格式支持类似于2010年11月30日的日期,但不支持2010年11月30日的日期。因此,在下面的例子中,我已经用来去除问题字符。(正则表达式使用向后查找来查看“st”、“nd”、“rd”或“th”前面是否有数字,如果是,则将其替换为空字符串,从而将其从字符串中删除。)
>>重新导入
>>>从日期时间导入日期时间
>>>mydate=“2009年11月30日”
>>>mydate=re.sub(“(?在Python3.7中,您可以使用isoformat()
mydatetime.strftime(“%Y%m%d”)
是正确的方法。%m
表示分钟。
from datetime import datetime
dates = ['30th November 2009', '31st March 2010', '30th September 2010']
for date in dates:
part = date.split()
print datetime.strptime('%s %s %s' % (part[0][:-2]), part[1], part[2]), '%d %B %Y').strftime('%Y%m%d')
>>> import re
>>> from datetime import datetime
>>> mydate = "30th November 2009"
>>> mydate = re.sub("(?<=\d)(st|nd|rd|th)","",mydate)
>>> mydate
'30 November 2009'
>>> mydatetime = datetime.strptime(mydate,"%d %B %Y")
>>> mydatetime
datetime.datetime(2009, 11, 30, 0, 0)
>>> mydatetime.strftime("%Y%M%d")
'20090030'
>>> from datetime import datetime
>>> datetime.today().date().isoformat().replace("-", "")
'20190220'