# text from a '#' to the end of line are comments # (c) 2014-2018, Martin J. Dürst, Aoyama Gakuin University # the output keeps newlines to make it easier to compare input and output # years 0000 # the earliest year 9999 # the latest year 2014 # this year 999 # not a year 1 22 333 # not years # year-months 0000-01 0000-12 0000-00 # 00 not a month 0000-13 # 13 not a month 2014-01 2014-12 2014-00 # 00 not a month 2014-13 # 13 not a month 9999-01 9999-12 9999-00 # 00 not a month 9999-13 # 13 not a month # dates 2014-05-09 # the date when the exercise was announced 2014-05-16 # the date when this file was published 2014-05-22 # the date when the exercise is due 0000-01-01 # the earliest date that we deal with 9999-12-31 # the latest date that we deal with 2014-01-00 # 00 not a day 2014-01-01 2014-01-31 2014-01-32 # not a day 2014-02-00 # 00 not a day 2014-02-01 2014-02-28 2014-02-29 # not a day 2014-03-00 # 00 not a day 2014-03-01 2014-03-31 2014-03-32 # not a day 2014-04-00 # 00 not a day 2014-04-01 2014-04-30 2014-04-31 # not a day 2014-05-00 # 00 not a day 2014-05-01 2014-05-31 2014-05-32 # not a day 2014-06-00 # 00 not a day 2014-06-01 2014-06-30 2014-06-31 # not a day 2014-07-00 # 00 not a day 2014-07-01 2014-07-31 2014-07-32 # not a day 2014-08-00 # 00 not a day 2014-08-01 2014-08-31 2014-08-32 # not a day 2014-09-00 # 00 not a day 2014-09-01 2014-09-30 2014-09-31 # not a day 2014-10-00 # 00 not a day 2014-10-01 2014-10-31 2014-10-32 # not a day 2014-11-00 # 00 not a day 2014-11-01 2014-11-30 2014-11-31 # not a day 2014-12-00 # 00 not a day 2014-12-01 2014-12-31 2014-12-32 # not a day # leap year testing 0000-02-29 # leap year, okay 0001-02-29 # no February 29th in common year 0002-02-29 # no February 29th in common year 0003-02-29 # no February 29th in common year 0004-02-29 # leap year, okay 0005-02-29 # no February 29th in common year 0006-02-29 # no February 29th in common year 0007-02-29 # no February 29th in common year 0008-02-29 # leap year, okay 0009-02-29 # no February 29th in common year 0010-02-29 # no February 29th in common year 0011-02-29 # no February 29th in common year 0012-02-29 # leap year, okay 0013-02-29 # no February 29th in common year 0014-02-29 # no February 29th in common year 0015-02-29 # no February 29th in common year 0016-02-29 # leap year, okay 0017-02-29 # no February 29th in common year 0018-02-29 # no February 29th in common year 0019-02-29 # no February 29th in common year 0020-02-29 # leap year, okay 0037-02-29 # no February 29th in common year 0045-02-29 # no February 29th in common year 0066-02-29 # no February 29th in common year 0100-02-29 # no February 29th in common year 0200-02-29 # no February 29th in common year 0300-02-29 # no February 29th in common year 0400-02-29 # leap year, okay 0500-02-29 # no February 29th in common year 0600-02-29 # no February 29th in common year 0700-02-29 # no February 29th in common year 0800-02-29 # leap year, okay 0900-02-29 # no February 29th in common year 1000-02-29 # no February 29th in common year 1100-02-29 # no February 29th in common year 1200-02-29 # leap year, okay 1300-02-29 # no February 29th in common year 1400-02-29 # no February 29th in common year 1500-02-29 # no February 29th in common year 1600-02-29 # leap year, okay 1700-02-29 # no February 29th in common year 1800-02-29 # no February 29th in common year 1900-02-29 # no February 29th in common year 2000-02-29 # leap year, okay 2004-02-29 # leap year, okay 2008-02-29 # leap year, okay 2012-02-29 # leap year, okay 2016-02-29 # leap year, okay # year-days 2345-123 0000-001 # earliest year-day 9999-365 # latest year-day 9999-366 # too late, not a year-day # leap year day length testing 0000-366 # leap year, okay 0001-366 # not a valid day 0002-366 # not a valid day 0003-366 # not a valid day 0004-366 # leap year, okay 0005-366 # not a valid day 0006-366 # not a valid day 0007-366 # not a valid day 0008-366 # leap year, okay 0009-366 # not a valid day 0010-366 # not a valid day 0011-366 # not a valid day 0012-366 # leap year, okay 0013-366 # not a valid day 0014-366 # not a valid day 0015-366 # not a valid day 0016-366 # leap year, okay 0017-366 # not a valid day 0018-366 # not a valid day 0019-366 # not a valid day 0020-366 # leap year, okay 0037-366 # not a valid day 0045-366 # not a valid day 0066-366 # not a valid day 0100-366 # not a valid day 0200-366 # not a valid day 0300-366 # not a valid day 0400-366 # leap year, okay 0500-366 # not a valid day 0600-366 # not a valid day 0700-366 # not a valid day 0800-366 # leap year, okay 0900-366 # not a valid day 1000-366 # not a valid day 1100-366 # not a valid day 1200-366 # leap year, okay 1300-366 # not a valid day 1400-366 # not a valid day 1500-366 # not a valid day 1600-366 # leap year, okay 1700-366 # not a valid day 1800-366 # not a valid day 1900-366 # not a valid day 2000-366 # leap year, okay 2004-366 # leap year, okay 2008-366 # leap year, okay 2012-366 # leap year, okay 2016-366 # leap year, okay # year-week-day, vaid 0000-W01-1 0000-W01-7 0000-W53-1 0000-W53-7 9999-W01-1 9999-W01-7 9999-W53-1 9999-W53-7 # year-week-day, invaid 0000-W00-1 0000-W00-7 0000-W54-1 0000-W54-7 0000-W01-0 0000-W01-8 0000-W01-9 # times, including seconds 00:00:00 12:12:12 23:59:59 23:59:60 23:60:59 # wrong, ignore 22:59:60 # wrong, ignore # confusing stuff, try to avoid catching 12345 # not a year 12345-12 # not a year-month 12345-123 # not a year-day 000:00:00 00:00:000