Basic date parsing usage with strftime in python -


this simple question on usage of date parsing symbols in strftime. given dates in following format:

mydt = "25-06 01:02:03"  

then attempt @ proper parsing string :

dateformat = '%d-%m %h:%m:%s' 

but apparently incorrect:

import dateutil.parser dateformat = '%d-%m %h:%m:%s' mydt = "25-06 01:02:03" dateutil.parser.parse(mydt).strftime(dateformat)  valueerror: month must in 1..12 

please suggest appropriate tweak/fix parsing pattern.

the dateutil.parser.parse() function takes no formatter. parses wide range of datetime formats without configuration.

use datetime.datetime.strptime() class method instead:

from datetime import datetime  result = datetime.strptime(mydt, dateformat) 

take account without year in input, resulting datetime() object have year set 1900. can fix current year:

this_year = datetime.now().year result = result.replace(year=this_year) 

if need support february 29th in leap years, add year input , parse that:

dateformat = '%y %d-%m %h:%m:%s' year_prefix = '{:%y} '.format(datetime.now()) result = datetime.strptime(year_prefix + mydt, dateformat) 

demo:

>>> datetime import datetime >>> dateformat = '%d-%m %h:%m:%s' >>> datetime.strptime(mydt, dateformat) datetime.datetime(1900, 6, 25, 1, 2, 3) >>> this_year = datetime.now().year >>> datetime.strptime(mydt, dateformat).replace(year=this_year) datetime.datetime(2015, 6, 25, 1, 2, 3) >>> dateformat = '%y %d-%m %h:%m:%s' >>> year_prefix = '{:%y} '.format(datetime.now()) >>> datetime.strptime(year_prefix + mydt, dateformat) datetime.datetime(2015, 6, 25, 1, 2, 3) 

Comments