<pre><code>class ValidationError(BaseException):
pass
class MyDate(object):
mounth = int()
day = int()
year = int()
_correct_mounth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def validate(self, day, mounth, year):
if not 1 <= mounth <= 12:
raise ValidationError, 'Invalid mounth!'
if year < 1:
raise ValidationError, 'Invalid year!'
if mounth == 2 and not year % 4:
if not 1 <= day <= 29:
raise ValidationError, 'Invalid day!'
else:
if not 1 <= day <= self._correct_mounth[mounth-1]:
raise ValidationError, 'Invalid day!'
return True
def __init__(self, date):
if not isinstance(date, basestring):
raise ValidationError, 'Not a string!'
date_parts = date.split('-')
if not isinstance(date_parts, list) or not len(date_parts) == 3:
raise ValidationError, 'Can`t change to list with 3 elements!'
for i in date_parts:
try:
int(i)
except TypeError:
raise ValidationError, 'Cannot convert to int!'
mounth = int(date_parts[0])
day = int(date_parts[1])
year = int(date_parts[2])
if self.validate(day, mounth, year):
self.mounth, self.day, self.year = mounth, day, year
dates = '12-31-13|08-23-12|10-10-13'
unchecked_dates = dates.split('|')
checked_dates = list()
for d in unchecked_dates:
try:
new_date = MyDate(d)
except ValidationError, e:
print '{0} is invalid date! {1}'.format(d, e)
else:
checked_dates.append(new_date)
if len(unchecked_dates) == len(checked_dates):
print 'All dates are correct.'
else:
print 'Correct dates: {0}'.format(checked_dates)
</code></pre>