James McCann on the Internet Dates To Test For

The following is a table of dates, both valid and invalid, that should be tested for. Dates are represented in dd/mm/yyyy format. The reason for testing each date is also given. See also Conformity Rules.

02/11/1997   Overflow HP/Apollo Domain OS
01/01/1998   To check digits "98". Also to ensure that December 31, 1997 was calculated as the 365th day of 1997. [Found in Y2K patches in mainframes and elsewhere.]
31/12/1998 - 01/01/1999   To check the digits "99". Also to ensure that December 31, 1998 was calculated as the 365th day of 1998. [Found in Y2K patches in mainframes and elsewhere.]
01/01/1999   Introduction of electronic version of the Euro.
05/02/1999   1st possible airline reservation problems (Max 330-day look-ahead)
xx/03/1999   Securities Industry Association simulates December 29, 1999 trading.
Fiscal Year 2000 for Business and Industry   Depending on the business, the fiscal year could start on March 1, 1999, July 1, 1999 or match the government fiscal year of October 1, 1999.
01/04/1999   New York state's fiscal year (FY) 2000 starts, and it is the start of the Canadian and Japanese FYs.
06/04/1999   The start of the U.K. FY 1999-2000
09/04/1999   A system looking at Short Julian days might stop since this is day 99 of year 99 (9999).
01/07/1999   FY 2000 begins in 46 U.S. states
22/08/1999   Overflow of "end of week" rollovers (e.g., GPS). Unremediated GPS think it's 1980-01-06
01/09/1999   FY 2000 begins in Texas.
09/09/1999   (9/9/99 or Possibly 9999) To check digits "99" or "9999".
23/09/1999   99 days to Year 2000
30/09/1999 - 01/10/1999   This is the last fiscal rollover prior to Y2K [for many including the US Government].
01/10/1999   First day of fiscal year 2000 [for many including the US Government, and states of Alabama and Michigan].
December 31, 1999   Last day before 2-digit year equals 00. Many systems will not operate correctly as they transition to the next day. Also, sometimes used as "Never Expires" date (IBM tapes are marked 99365--all could expire today).
January 0, 2000   To ensure this date is NOT processed [some spreadsheets and database applications do have this problem and count January 0 as a day before the 1st].
January 1, 2000   Key date in any compliance testing
January 1, 2000, 1200 Hrs (Noon)   Embedded date chip failure has been found.
January 3, 2000   First full work day in the new year. First possible payday after rollover.
January 4, 2000   First business day of the Year 2000 in the U.K.
January 10, 2000   First 7 or 8 character date in YYYY/M/DD format (2000/1/10 or 2000/01/10)
February 28, 2000   To check leap year is being properly accounted for. Many programmers have incorrectly been taught that the year 2000 is not a leap year -- Year 2000 IS a leap year. Systems should be tested to ensure correct handling of the transition to the 29th day of February 2000.
February 29, 2000   To check leap year is being properly accounted for. Some systems may transition to the 29th of February 2000 correctly, but may not allow the date to be set to the 29th. This would happen if a system was reinitialized after the transition and should be explicitly tested for.
February 30, 2000   To ensure that this date is NOT processed [found in some PC applications]
February 31, 2000   To ensure that this date is NOT processed [found in some PC applications]
March 1, 2000   To ensure date calculations have taken leap year into account
April 2, 2000   First change to Daylight Savings Time after rollover (US)
April 15, 2000   Income Tax day
September 30, 2000 to October 1, 2000   This is the first fiscal rollover following Y2K [for many including the US Government].
October 10, 2000   First 8 character date using a 2-digit month (2000/10/10)
October 29, 2000   First return to Standard Time after rollover (US)
December 31, 2000   366th day of the year 2000. This could be a problem for systems that use Short Julian days.
January 1, 2001   First day in the 21st Century. This is the last leap year related date, testing the first day of January 2001 to ensure it can be set.
February 29, 2001   To ensure that this date is NOT processed as a leap year
September 9, 2001   A UNIX date when the time_t value goes from 9 to 10 digits. Suspects are timestamps stored in fixed-column tables and internal variables.
After January 1, 2002   Or any other date past this day, to ensure no processing errors occur in backward calculations and processing of dates in the 1980s and 1990s at this point in time
February 29, 2004   To ensure that this date is processed as a leap year
January 1, 2037   Rollover date for NTP systems
January 19, 2038   Overflow of UNIX systems
September 18, 2042   Overflow of IBM System/360
2072, Exact Date TBD   Overflow of Milstar Operating System
February 28, 2100   Last Day of February - NOT a leap year

 

Date To Test In/Valid Reason For Test
00/00/1998 Invalid A non-existent date
01/01/1998 Valid First day following a year change
29/02/1998 Invalid Only valid in a leap year
30/02/1998 Invalid A non-existent date
31/02/1998 Invalid A non-existent date
01/03/1998 Valid The day after 28th Feb in a non leap year
31/04/1998 Invalid A non-existent date
31/06/1998 Invalid A non-existent date
13/08/1998 Valid 256th day of the year
09/09/1998 Valid See 09/09/1999
31/09/1998 Invalid A non-existent date
10/10/1998 Valid First time that date is eight digits long
31/11/1998 Invalid A non-existent date
31/12/1998 Valid 365th day of the year
00/00/1999 Invalid A non-existent date
01/01/1999 Valid First day following a year change
29/02/1999 Invalid Only valid in a leap year
30/02/1999 Invalid A non-existent date
31/02/1999 Invalid A non-existent date
01/03/1999 Valid The day after 28th Feb in a non leap year
31/04/1999 Invalid A non-existent date
31/06/1999 Invalid A non-existent date
13/08/1999 Valid 256th day of the year
09/09/1999 Valid 9/9/99 used as end-of-record marker in old code
31/09/1999 Invalid A non-existent date
10/10/1999 Valid First time that date is eight digits long
31/11/1999 Invalid A non-existent date
31/12/1999 Valid 365th day of the year
00/00/2000 Invalid A non-existent date
01/01/2000 Valid First day following a millennium change
29/02/2000 Valid The leap year day
30/02/2000 Invalid A non-existent date
31/02/2000 Invalid A non-existent date
01/03/2000 Valid The day following the leap year day
31/04/2000 Invalid A non-existent date
31/06/2000 Invalid A non-existent date
12/08/2000 Valid 256th day of the year
09/09/2000 Valid See 09/09/1999
31/09/2000 Invalid A non-existent date
10/10/2000 Valid First time that date is eight digits long
31/11/2000 Invalid A non-existent date
31/12/2000 Valid 366th day of a leap year (the real extra day).
00/00/2001 Invalid A non-existent date
01/01/2001 Valid First day following a year change
29/02/2001 Invalid Only valid in a leap year
30/02/2001 Invalid A non-existent date
31/02/2001 Invalid A non-existent date
01/03/2001 Valid The day after 28th Feb in a non leap year
31/04/2001 Invalid A non-existent date
31/06/2001 Invalid A non-existent date
09/09/2001 Valid See 09/09/1999
31/09/2001 Invalid A non-existent date
10/10/2001 Valid First time that date is eight digits long
31/11/2001 Invalid A non-existent date
31/12/2001 Valid 365th day of the year

Updated : Tuesday November 28, 2000 14:54

To receive email when page changes, enter address in box, press Enter Powered by Netmind