In my Python script, I pass a commandline option --before with a date argument, i.e.
myscript.py --before 2014-Aug-02
I then need to read it into my variable. I want to support several possible date formats, i.e. 2014-Aug-02, 2014-08-02, 2014-08, ...
In my script, I have following construct to try to match the provided date format, but it looks to me very ugly. Is there a better, more elegant way to do it?
if args.before:
try:
BEFORE = datetime.datetime.strptime(args.before[0], "%Y-%b-%d")
except ValueError:
try:
BEFORE = datetime.datetime.strptime(args.before[0], "%Y-%b")
except ValueError:
try:
BEFORE = datetime.datetime.strptime(args.before[0], "%Y-%m-%d")
except ValueError:
try:
BEFORE = datetime.datetime.strptime(args.before[0], "%Y-%m")
except ValueError:
try:
BEFORE = datetime.datetime.strptime(args.before[0], "%Y")
except ValueError:
print 'time data %s does not match format' % args.before[0]
exit(1)