Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import unittest
- class InvalidDateException(Exception):pass
- def is_leap(year):
- if year % 400 == 0:
- return True
- elif year % 100 == 0:
- return False
- elif year % 4 == 0:
- return True
- else:
- return False
- parse_date = lambda x: map(int, x.split('-'))
- def day_of_year(date):
- day, month, year = parse_date(date)
- if month < 1 or month > 12:
- raise InvalidDateException("invalid month - %d" % month)
- days_in_month = [0, 31, 28, 31, 30, 31, 30, 31,
- 31, 30, 31, 30, 31]
- if month > 2 and is_leap(year):
- days_in_month[2] = 29
- else:
- days_in_month[2] = 28
- if day > days_in_month[month]:
- raise InvalidDateException("month %d doesn't have %d days" % (month,
- day))
- for i in range(1,month):
- day += days_in_month[i]
- return day
- def age(start_date_str, end_date_str):
- """ start_date < end_date """
- start_date, end_date = map(parse_date, (start_date_str, end_date_str))
- print start_date, end_date
- days = (365 if not is_leap(start_date[2]) else 366) - \
- day_of_year(start_date_str)
- print "Start - %d: %d" % (start_date[2], days)
- for year in range(start_date[2] + 1 , end_date[2]):
- if is_leap(year): days += 366
- else: days += 365
- print "Loop - %d: %d" % (year, days)
- if end_date[2] > start_date[2]:
- days += day_of_year(end_date_str)
- else:
- days = day_of_year(end_date_str) - days
- print "End - %d" % days
- return days
- if __name__ == '__main__':
- args = len(sys.argv)
- if args > 2:
- print age(sys.argv[1], sys.argv[2])
- elif args > 1:
- print day_of_year(sys.argv[1])
Add Comment
Please, Sign In to add comment