© J R Stockton, ≥ 2013-01-01

Critical and Significant Dates.

Links within this site :-

 Usage Counter Those benefiting from this site are invited to contribute to some local charity.

Conditions of Use and Citation

Please do not fetch this Web page (or others of mine) by automated subscription; that wastes my resources. Because of this abuse, I may sometimes change the name or offer only critdate.zip.


I do not permit the wording of this list of dates to be copied on the Net or elsewhere, either in whole or on part, except for "fair comment" extracts; but the dates and the facts are naturally public. By breaching my copyright, you implicitly agree to termination of your account.

I do not permit this Web page to be copied, except in these cases :-
  (i) as described in my Merlyn Home Page page,
  (ii) temporarily by agreement, for citation in print or equivalent (to reduce load on my own page at Demon),
  (iii) by normal transparent proxying/cacheing which serves a complete and substantially current version without any modifications overt or concealed,
  (iv) for personal private reference.

I may agree to limited copying within organisations. All copies must be headed with a proper attribution, must cite it as <URL:critdate.htm>, and must give the date made.

Material on this page has neither been copied nor derived from Warren, McVeigh & Griffin, Inc..


Normal Web links to and citations of this page are welcome (there is no need to ask).

Those intending citation in popular print or broadcast media are requested to consult me first about cacheing or mirroring, and about relative links.

Critical Dates

The major criticalities are, sequentially, the August 1999 GPS rollover, the Year 2000 and all its two-digit rollover consequences, the Leapness of 2000 (including Day 366), and the 32-bit UNIX (and C library) Year 2038 problem; and also the various dates relating to introduction of the Euro currency.

There are or have been other critical date lists at Cinderella "Timeline", at Volker Kolberg's site, in Capers Jones's "Dangerous Dates" page, etc., etc. My more general Year 2000 and Date/Time references are now on other pages. Excerpts on Computer Calendar-Clock Problems by Peter G. Neumann (2000) is instructive. Some errors are described in Software Horror Stories by Nachum Dershowitz, with links.

Much of the following was picked up from the comp Y2k, UK Y2k and Risks (Risks Digest) Usenet newsgroups and from a Y2k FAQ, with the aid of the Calendar FAQ; also doncio and other Web pages such as at Mitre.

See also Wikipedia Time formatting and storage bugs, Notable epoch dates in computing.

See also, at IET, Dates Potentially Causing Problems in Computer Systems from 2001-2100 (discovered in 2011).

When I receive E-mail information correcting or extending the list, I will assume permission to quote.

Links like _ are not intended for general use.

The List of Dates

This is, fundamentally, a list of Critical and Significant Dates, which is not quite the same thing as a list of dates which ought to be used in testing; for example, 2000-02-29 was critical as possibly unexpected, but in testing one should also try 2000-02-28, 2000-02-30, 2000-02-31, 2000-03-00 & 2000-03-01, in order to make sure that the valid dates are consecutive and without overlap (Note 19); likewise for 2000-366. Some of the dates are those resulting from other date failures.

Some are important; some are possibly just amusing - it is up to you to discriminate.

This List is not a prediction of disaster; it is an indication of when error may be prevented by sufficient care.

Software errors may have been fixed in later versions.

The Gregorian calendar, with Historical year numbering, is to be assumed where necessary (some dates are UNCHECKED - you MUST verify - they may be a day or two out). However, many of the critical dates would be the same dates (which currently occur thirteen days later) in a consistently Julian environment. Note that, in computing, conventional day-numbers preceding 1900-03-01 and day-counts spanning 1900-02-28 to 1900-03-01 might be a day out, if a day in between those dates was assumed.

The more Critical Dates may have been chosen as trigger dates by virus writers - 2000-01-01, 2000-02-29, 2001.02.29, etc. - and may emulate date errors.

Some dates of non-computer origin are included. Historical dates are mainly limited to those of significance to UK history and culture.

For near-present Space dates, see Ron Baalke.

Virus trigger dates are NOT included - use a virus checker such as F-Prot (see PC Links Reference) and others.

Abbreviations should be obvious enough to those for whom they are significant.

2006-08-01 - New Warning

In general, I have mainly considered events relating to counting UP to particular numbers. There are also events relating counting DOWN; and those are less well predicted.

See 2006-05-13 and 2008-01-19 below as examples.

The Dates Themselves

Date Formats

To simplify use of my DoW checker :-
• Julian dates are given as YYYY/MM/DD.
• Only Gregorian AD dates are ISO 8601 hyphen-separated, unless invalid, when dots are used : otherwise, spaces are used.

Timing of Events

Some of these are local date/times; some are GMT/UTC or similar. I use GMT for legal GMT, with date changing at London mean solar midnight; the term UT might be confused with UTC.

It is very important to remember that the local time corresponding to a given GMT depends on the local Time Zone, and on Daylight saving; also that the time in question will be the time that the system is actually set to, not what it should be set to.

For example, a DOS/Windows PC will with high probability be set to local time internally, but a UNIX computer should be on GMT/UTC internally. DOS software translated from UNIX may default to California time settings.

Leap seconds may affect some dates, e.g. GPS rollover 1999, UNIX 2038.

The form a^b is used for "a to the power b" = ab. The form mEe is used for m×10e.

N.B. Two aspects of the year before AD 0001 are presented below, as BC 0001 and as ±0000 Astronomical.





0 :-
To determine CMJD and/or Day-of-Week, see "mjd_date", "bat_date", "nowminus", and "dateprox" in my programs directory; "longcalc", which works in wide-range exact integer seconds, can be used for dates after Y32k; see also Zeller. For a JavaScript calendar, JavaScript Calendars and Clocks.
1 :-
"These are machines built by Apollo Computer, running the DomainOS operating system (DomainOS is Not Unix, BTW). The fail date is 14:59 GMT November 2, 1997. At that time, the highest bit of the 32-bit system clock value will go to '1'. Some functions may treat this a signed integer, and will give erroneous values if they use subtraction to calculate elapsed time."
Thread "Hp's Computers" in news:comp.software.year-2000, Oct'97.
E-mail 2001-04-19 - these are really Apollo machines, from before the HP takeover in 1998. Good patch info from Jim Rees; 1997-11-02 14:59 is an erroneous 31-bit rollover; the genuine 32-bit one is at 2015-09-05 05:58.
2 :-
This set is largely derived from Randall Bart :- Erroneous date-form is longer than ever before - field overflow is possible - null-terminated strings may lose termination. Date-form occurs when (Year-1900) is printed with %d, %2d or equivalent, and Year>1999; the "19" may be implicit or explicit; leading zero may be truncated. Date strings are here in UK D/M/Y order, or Ordinal Date Y-D. Note 3.
  • ????-??-?? - The day on which "YY" is changed to "YYYY"
  • 2000-01-01 - "01/01/100" - N.B. UNIX tm-year is (Year-1900).
    2000-01-01 - "100-001" - (YY overflow & %3d daycount).
  • 2000-01-05 - "Wednesday, 05/01/100"
  • 2000-01-10 - "10/01/100" (format string "%d/%2d/%2d")
  • 2000-01-12 - "Wednesday, 12/01/100"
  • 2000-04-09 - "100-100" (YY overflow & %d daycount)
  • 2000-09-01 - "01 September 19100"
  • 2000-09-06 - "Wednesday, 06 September 19100"
  • 2000-09-10 - "10 September 19100"
  • 2000-09-13 - "Wednesday, 13 September 19100"
  • 2000-09-27 - "Twenty-seventh [of] September 19100"
  • 2000-10-01 - "01/10/100" (format string "%2d/%d/%2d")
  • 2000-10-04 - "Wednesday, 04/10/100"
  • 2000-10-10 - "10/10/100"
  • 2000-10-11 - "Wednesday, 11/10/100"
In languages other than English ...
These may occur in 1999, if the date format has been changed from YY to YYYY.
3 :-
If in conjunction with time as %d:%d:%d, full length is not achieved until mid-morning.
4 :-
And non-UNIX 32-bit or compatible C/C++ libraries, etc., which means that the bug can appear in, for example, DOS programs; I may have found it in ZIP.EXE, from ZIP22X.EXE, from Info-Zip via FTP sites. It's been reported in Microsoft MFC CTime class. It's been seen in control software. It's alleged in Word Perfect 6.1 (for ?). In UNIX, 03:14:08 is GMT/UTC; in DOS/Win3/Win9x, it's local time.
5 :-
Unisys A Series system date, various possible year overflows in 1987, 2003, 2036.
6 :-
Microsoft's help file: "mktime handles dates in any time zone from midnight, January 1, 1970, to midnight, February 5, 2036."
7 :-
In 2000 .. 2009, code using  'printf("Year=%d", yy)'  will print 0 .. 9 rather than 00 .. 09; so  'printf("Year=%d%d", cc, yy)'  will print 200 .. 209.
8 :-
Code using %2d to write tm_year = Year-1900 to a string, then moving the first two characters to a print field, will in 2000-9 give 10, 2010-9 give 11, ...
9 :-
Moving yyyy mod 100 (as opposed to yyyy - 1900) into a string with %d format will in 200X give an X followed by an unmodified byte.
10 :-
Graham E. Kinns wrote (Jul 98) : SNews has a severe 9th Sep 2001 problem when the decimal representation of time_t rolls from 9 to 10 digits, breaking the fixed format of the .idx files :(   I believe the same applies to NewsWin.
Richard Clayton wrote in article <+ypcqNIrBmY4EAt2@turnpike.com> of Thu, 23 Dec 1999 17:48:27 in news:demon.ip.support.pc that the new SNews 1.31 fixes this.

Philip Guenther (mail, Apr 2001) reports that "maildir" mail format usually includes the time_t value in decimal at the start of the filename, and that this is often used for sorting; mis-sorts expected from Sep 9.
11 :-
"Both localtime() & time() are Perl equivalents of the corresponding C functions and use them internally. But what most Perl programmers probably do not know is that time(3c) will return (( time_t )-1) if it fails for any reason, so localtime(-1) will happily return a formatted date string for 'Wednesday December 31, 1969'." Risks Digest 19.88/7.
12 :-
It's suggested that 2000.01.00 may lock Pentiums up irrevocably.
13 :-
Calendars, January 1900 and 2000 :-
        1   2   3   4   5   6   7   8   9   10 ...
1900 : Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed ...
2000 : Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon ...

Systems that fell back a century therefore have the weekends two days early.
They will also have Summer Time and many Church and secular holidays wrong.
Beware of automatic controls.

14 :-
UK and foreign general holidays near Y2k: my best estimate so far; most foreign ones were guessed only (RSVP) :-
---------------------- 1999 ---------------   ----------- 2000 ------
Dec:  22  23  24  25  26  27  28  29  30  31, Jan: 01  02  03  04  05
     Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri      Sat Sun Mon Tue Wed

E+W:  W   W  1/2 w/e w/e Hol Hol  W   W  Hol      w/e w/e Hol  W   W
NI :                                  <--- as E+W ? --->
Sco:  W   W   W  w/e w/e Hol Hol  W   W  Hol      w/e w/e Hol Hol  W

Irl:  W   W  1/2 w/e w/e Hol Hol  W   W   W       w/e w/e Hol  W   W

NL :  W   W   W  w/e w/e  W   W   W   W   W       w/e w/e  W   W   W

EU :  W   W   ?  w/e w/e  W?  W?  W   W   W       w/e w/e  W   W   W

Can:  W   W  1/2 w/e w/e Hol Hol  W   W   W       w/e w/e Hol  W   W
USA:  W   W* Hol w/e w/e  W*  W   W   W  Hol      w/e w/e  W   W   W

ISO: ----- Week 51 -----|----------- Week 52 ------------|--- Week 1 ---

1999-09-06 : Updated, esp. Sco, from 1999-2000 IoP diary.
W/h:   Working day, though half-holiday for many.
"Holidays aren't uniform over Scotland - different places have different odd days here and there, but over the new year period they are relatively standard".
*   "In the USA, banks and exchanges will open Dec 23 and 27, but either may be a state or local holiday in some locales. Some companies will be closed."   URL?
*   See also Annual Holiday Dates.

15 :-
I hear that in Motorola's VERSAdos Multi-tasking Operating System (UNIX look-alike), at 31 December 2043, the system clock rolls-over to 1 January 1980, because the 'Telefile' Time/Date 4 byte (32 bit) format is used, where the MSB 6 bits are used for years from 1980 (i.e. 1980 + 0 - 63 years expires at 2043).   (Telefile format : y6 m4 d5 h5 m6 s6)

This probably obscure operating system is still used by a 1980's developed SCADA system from Leeds & Northrup (Australia) Pty Ltd of Sydney (now Foxboro-LN Pty Ltd of Sydney), their LN2068 SCADA System (or LN700 in USA). It is the current SCADA system used by a number of power utilities in Australia and New Zealand, Asia and USA.
16 :-
Note that it will be Shabbat from before dusk 1999-12-31 to after dusk 2000-01-01. One should not expect observant Jews to want to participate either in program remediation or in Gentile celebration during that period (they're probably unenthusiastic about the whole affair, anyway). Also, they should consider reading 2000-04-30 above as 2000-03-31.
17 :-
The predicted Sunspot count peak was essentially flat over several months. Radio noise may affect communications. Geomagnetic storms may affect the National Grid. Solar flares peak probably within 2000..2002.
Monash, 1997-04-10? : "If current projections are correct, the sunspot maximum is currently estimated to peak in March of the year 2000. It must be noted, however, that predicting the month of maximum is even less certain than the sunspot number. The actual month of sunspot maximum could be as early as January 1999 or as late as June, 2001."
Harjit S. Ahluwalia, for 1998-04-03 : Abstract : The Planetary Index Ap, Ohl's Conjecture and the Predicted Size of Solar Cycle 23.
18 :-
I have seen a report that : Digital Unix had a bug where a timespec value (seconds and nanoseconds) was being checked to make sure the nanoseconds field wasn't more than 1 billion; instead, it was checking the seconds field, and as we hit the (Unix epoch) 1 billion second mark in 2001, the check would erroneously indicate it was invalid. (On the "documentation CD-ROM that came with Digital Unix 4.0D"; other Y2k errors were also fixed.)
19 :-
A system which is at the last valid day of any month MUST roll over at midnight to the first day of the next month. It SHOULD NOT (but, I think, not MUST NOT) be possible to set to a day in any month after the last valid day (and likewise before the first), and a system SHOULD if possible be designed not to allow this; but, if such a setting has been made, it is not at all clear what the setting should become at subsequent midnights - it's unlikely to be right, anyway, and it may be better to leave the error blatant and unambiguous by just incrementing the day field.
20 :-
The exact interpretation of the sources, and its representation on the Gregorian scale, are not necessarily always agreed.

Anno Mundi started on BC 3761/10/07 Monday (beginning at the previous Sunset [in Jerusalem] or 6 p.m.), Julian Calendar.
Whitaker's Almanac (1989; Pocket 2000) gives the epoch for chronology as Oct 7, 3761 BC. I make that CMJD -2052003, BC 3761 09 07 Gregorian, Monday. It is numbered as Day 2.
Remy Landau's Hebrew Calendar site; be careful with its notation (Proleptic Gregorian Astronomical), particularly before AD 1. My The Hebrew Calendar.
21 :-
(1) At NIST, USA : Ancient Calendars (a few pages), and From Sundials To Atomic Clocks (26MB PDF).
(2) At webexhibits, via Calendars through the Ages,
& Doggett, Calendars.
(3) At ScienceWorld : Weisstein.
(4) Thor Heyerdahl, Early Man and the Ocean, ISBN 0 04 572022 3, p.335 : "The zero date 4 Ahau 2 Cumhu .. our system .. 12 August 3113 BC". Gregorian?
22 :-
According to James Ussher, Anglican Archbishop of Armagh (1581-1656) in a posthumous edition (of Annales veteris testamenti a prima mundi origine deducti, 1650), The Annals of the World, iv, of 1658 : the Creation of the World occurred at the Equinox in October of BC 4004 (Julian). Note that Ussher seems, like others, to consider the evening of a day to be what we would now call the previous evening.

Ussher wrote : ... from the evening ushering in the first day of the World, to that midnight which began the first day of the Christian era, there was 4003 years, seventy days, and six temporarie hours - and AD 0001-01-01 0h minus 4003y 70d 6h is BC 4004-10-22 18h, i.e. 6 p.m. of Saturday 22nd October, BC 4004. That makes the first full day Sunday 23rd (Genesis, 1,5; the seventh day, of rest, is the Jewish Sabbath). Garden of Eden Time, presumably.

The date and time are often misquoted as the 23rd or 26th, and as 9 a.m.

The date, or the year, is often given in old Bibles : _ _ _
23 :-
World Council of Churches (Aleppo 1997), Towards a Common Date of Easter - also see Claus Tøndering's Calendar FAQ, and The Date of Easter Sunday


Doubtless I've missed a lot ... Leap seconds may be omitted above. Each "999" problem may be accompanied by a "1000" problem, and so on. For over three decades after 2000, it will not be possible to discriminate between YY/MM/DD and DD/MM/YY by inspection.

Cory Hamasaki (kiyoinc@ibm.net) wrote:
"... EXPDT=98000 or EXPDT=99000 or EXPDT=99365 which are fun dates, ..." which I think are specials in an expiry date field on some misbegotten systems ...

Also critical - the start of any regular period which first includes 2000 (the Jo Anne Effect) - for example corporate FY 1999-07-01..2000-06-30; or includes 1999. Note that while the UK national FY starts on April 6th, UK companies can choose their own FY, and I understand an April 1st start is common. Also that some bodies number their FY with its start year, some with its end year; the rational ones will, unless starting on Jan 1, use for example 1998-99 or 1999-2000 - which is a longer string.

When checking, verify Day-of-Week, especially across the Feb-Mar transitions, and at the ends of 2000.

Foreigners, beware side-effects of peculiar calendars, and North-South differences. Summer Time (Daylight Saving Time, DST) rules mean that time errors may arise from Date or Day-of-Week errors.

Any other date which used to seem far in the future (or past) may have been used as a "special" marker. Consider YY/MM/DD with YY=MM=DD≤12.

For many dates bearing an arithmetical relationship with the start of 2000, there may be corresponding problems with dates bearing the same relationship with 2038-01-19 (or other range-end dates) - cf. 2008-01-19.

Failure Modes


Repeated Risks

Some listed here as Y2k hay have correponding Y2038 risks.


Leaps in Date/Time

Summer Time

Summer Time - BST/DST - Daylight Saving Time :-

Year Rollover

Old DOS GAWK and C Library week numbers - see 2002-12-30 and Batch; affects many years.

Apparently, systems for NASA's shuttles may have inadequate provision for the Year Number to change during flight, so that 2007-01-01 would be 2006-366 - "YERO (Year End Rollover)".


In some countries, the dates of certain public holidays are governed by that of Easter Sunday. Problems may occur when those coincide with other important dates, such as the beginning or end of a financial year.

Other faiths may give similar problems.

Appointments Scheduling

Some "Diary" software is wrongly influenced by Summer Time or Time Zone, using absolute where it should use local, or vice versa. A regular 0900h meeting in Mar-Apr may shift to 0800h. A Londoner, having entered a meeting for 1000h in Paris, may find on arrival that it is now listed as at 1100h. It is unsafe to rely, in today's world, on a time of dubious offset from GMT.

Specific Systems

Periodic Events

Critical Periods

In general, these may start, and therefore finish, at any time. They are based on counting in units of time : note that it is not uncommon to count in fractional units, such as tenths of a second.

While not necessarily significantly repetitive, a system with an uninitialised or mis-set calendar or clock may reach a significant moment, Y2k or otherwise, at any time.

Preferred financial periods are likely to be country-dependent - 40-year term loans, 30, 25, 20-year mortgages, etc.

Multiples of Units of Time
--09:06:082^15 secondsSigned WORD wraps1
--18:12:162^16 secondsUnsigned WORD wraps2
-24.8520:31:23.6482^31 millisecondsSigned DWORD wraps3
-49.7117:02:47.2962^32 millisecondsUnsigned DWORD wraps4
-248.5513:13:56.4802^31 centisecondsSolaris; Galaxy?5
4.911762.000:00:002^8 weeksGPS rollover6
31.9011650.820:16:002^24 minutes7
68.05-03:14:082^31 secondsSigned time_t wraps8
136.10-06:28:162^32 secondsUnsigned time_t wraps9
179.4365536.000:00:002^16 days10

Other Periods

These may be of interest, but are unlikely to be of much technical importance.

Home Page
Mail: no HTML
© Dr J R Stockton, near London, UK.
All Rights Reserved.
These pages are tested mainly with Firefox and W3's Tidy.
This site, , is maintained by me.