Is there an easy way to decrement an invalid date like "November 31st" to the last valid date of the month? November 31st does not exist as there aren't 31 days in November.
The date strings that I'm working with are very messy and inconsistent so I want to avoid trying to slice the string or anything like that. Parser.parse() works great for my use case when the dates aren't invalid.
from dateutil import parser
datstrings_list = ["Nov 31, 1976", "11/31/76", "11/31/1976", "November 31st, 1976","1/32/1976"]
date_list = []
for i in datestrings_list:
datestring = i
date = parser.parse(datestring).date()
date_list.append(date)
Creates error:
ParserError: day is out of range for month: Nov 31, 1976
desired value for date_list:
[datetime.date(1976, 11, 30), datetime.date(1976, 11, 30),datetime.date(1976, 11, 30),datetime.date(1976, 11, 30), datetime.date(1/31/1976)]