Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将日期字符串转换为YYYYMMDD_Python - Fatal编程技术网

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'