8

I have dd-MMM-yyyy dates. How do i convert this to yyyyMMdd, in Python ?

For example i need to convert 20-Nov-2002 to 20021120

Pedro Sousa
  • 147
  • 1
  • 2
  • 5

2 Answers2

33

You can use datetime.datetime.strptime() to read the date in a specific format and then use .strftime() to write it back in your required format. Example -

>>> import datetime
>>> datetime.datetime.strptime('20-Nov-2002','%d-%b-%Y').strftime('%Y%m%d')
'20021120'

Formats -

%d - 2 digit date

%b - 3-letter month abbreviation

%Y - 4 digit year

%m - 2 digit month

More details about different supported formats can be found here.

Community
  • 1
  • 1
Anand S Kumar
  • 88,551
  • 18
  • 188
  • 176
2

You can use re module to do that, like this:

import re                                                                   
text = '20-Nov-2002'.replace('Nov', '11')                                                        
print(re.sub(r'(\d+)-(\d+)-(\d+)', r'\3-\1-\2', text))  

output:

2002-20-11

But if you want convert the all month, not just Nov to 11.

you can use the datetime module like this:

import re, datetime           
month = datetime.datetime.strptime('Nov', '%b').strftime('%m')   

text = '20-{month}-2002'.format(month=month)
print(re.sub(r'(\d+)-(\d+)-(\d+)', r'\3-\1-\2', text))  

And the output is the same.

Remi Guan
  • 21,506
  • 17
  • 64
  • 87