There is an increasing problem coming up as we make the leap into the next millennium.
People may argue whether or not the millennium starts on January 1, 2000, or January 1, 2001 (a strict interpretation would indicate the latter); the critical date from a computing standpoint is certainly January 1, 2000.
Computer systems where dates were stored "overly efficiently" may store dates like December 31, 1999 as 991231. The next day is 000101, which, if compared to the previous day, is a lower value. Programs that compare dates in these formats in these ways will fail in often-unpredictable ways. Some programs were written to specially interpret dates with "lots of 9's" to indicate inactive records; this will also cause problems...
Another day of problems will be March 1, 2000. Year 2000 is a leap year, however some computer software will not recognize this correctly.
The year 2000, as fate would have it, has 54 weeks! The first week has one day in 2000 (Saturday, January 1), and the 54th week has one day (Sunday, December 31).
This occurs only in leap years, and once every 7 such years, thus occurring once every 28 years. (Modulo the "divisible-by-100 rule, of course, which might modify this to a gap of perhaps as much as 42 years...)
These sorts of system design errors are being termed as "Y2K problems."
Note that they represent errors in design, and not necessarily errors in the actual implementation.
The "official" Papal declaration on leap years by Pope Gregory is entitled Inter Gravissimas and reads something like the following:
" "9. Deinde, ne in posterum a XII kalendas aprilis aequinoctium recedat, statuimus bissextum quarto quoque anno (uti mos est) continuari debere, praeterquam in centesimis annis; qui, quamvis bissextiles antea semper fuerint, qualem etiam esse volumus annum MDC, post eum tamen qui deinceps consequentur centesimi non omnes bissextiles sint, sed in quadringentis quibusque annis primi quique tres centesimi sine bissexto transigantur, quartus vero quisque centesimus bissextilis sit, ita ut annus MDCC, MDCCC, MDCCCC bissextiles non sint. Anno vero MM, more consueto dies bissextus intercaletur, februario dies XXIX continente, idemque ordo intermittendi intercalandique bissextum diem in quadringentis quibusque annis perpetuo conservetur." "
The final sentence specifically states that year 2000 shall be a leap year.
The rules for Great Britain and its colonies was established by an Act of Parliament in 1751. The quote below came from Mark Brader's transcription which is on display at the Urban Legends Site
II. And for the continuing and preserving the Calendar or Method of Reckoning, and computing the Days of the Year in the same regular Course, as near as may be, in all Times coming;
Be it further enacted by the Authority aforesaid,
That the several Years of our Lord, 1800, 1900, 2100, 2200, 2300, or any other hundredth Years of our Lord, which shall happen in Time to come, except only every fourth hundredth Year of our Lord, whereof the Year of our Lord 2000 shall be the first, shall not be esteemed or taken to be Bissextile or Leap Years, but shall be taken to be common Years, consisting of 365 Days, and no more;
and that the Years of our Lord 2000, 2400, 2800, and every other fourth hundred Year of our Lord, from the said Year of our Lord 2000 inclusive, and also all other Years of our Lord, which by the present Supputation are esteemed to be Bissextile or Leap Years, shall for the future, and in all Times to come, be esteemed and taken to be Bissextile or Leap Years, consisting of 366 Days, in the same Sort and Manner as is now used with respect to every fourth Year of our Lord.
I have since seen a transcription of a letter by Lord Chesterton, who drafted this bill, as a footnote in Paul Graham's book on Common Lisp. The letter is a hoot, and is rather suggestive that the politicians in 1751 did not have an easy time coping with the need to understand the technicalities of astronomy that were necessary to support the 1752 calendar change that was also legislated in this bill; it is pretty clear that things have changed very little since that time.
The NIST's ITL Bulletin: What is Year 2000 Compliance? article provides some good background on the issues of what "compliance" might be considered to mean. There is no unequivocal answer, by the way...
The Free Software Foundation web page on Year 2000 - GNU Project nicely describes why Unix-like operating systems like Linux should not generally have terribly dire problems from the "Year 2000 Problem."
Unix-like systems presently have "an issue" with the year 2038, as that is the latest date representable within the typical 32 bit data representation. (January 1, 1970 plus 2 to the 31 seconds is a date that falls in early 2038.)
It seems rather likely that over the next 40 years most mission-critical Unix systems will migrate to 64 bit implementations that would handle dates up to something like year 292,271,025,015, well beyond the expected retirement dates of anyone likely to work on Unix systems in the near future...
Notes by Dennis Ritchie on Unix - 1st Edition provide some insight from the original design of Unix.
Run: % cal 9 1752
An unusual calendar is printed for September 1752. That is the month 11 days were skipped to make up for lack of leap year adjustments. To see this calendar, type: cal 9 1752
The command cal 83 refers to the year 83, not 1983.
The year is always considered to start in January.
This makes it abundantly clear that the creators of Unix were well aware of the "Year 2000" problem and other such calendar issues at the time that Unix was first created twenty five-odd years ago.
Some producers of Linux distributions have further comments. It appears that all too often the requests on the Internet and elsewhere for "Y2K Compliance" information seems driven by "pointy-haired managers" of the fashion described in Scott Adam's Dilbert cartoon strip.
Perhaps one of the following URLs can provide reassurance to those that most need it...
I have yet to see any documentation on Y2K issues with respect to the Slackware distribution; it seems unlikely that it will be substantially more vulnerable to problems than other distributions, but those that need "sign-off" or other such things that appear to be reassurance may want to look at other distributions.
Linux systems include software from a wide variety of sources. Some people have done analysis work to verify that software will continue to function after Year 2000.
LinuxWorld article on Y2K; a good article...
GNU/FSF compliance was described at GNU/FSF on Y2K
There is also a page where information on a variety of GPL/FSF software was collected with respect to "Y2K testing"; it is now a dead link.
This web page, like the FSF page, nicely describes the nature of Year 2000 problems in general, in addition to applying them to whether Perl code will work two or three years from now.
A nice set of links to information on how many Debian software packages cope with date issues.
Some good material on the topic...
This book, available from Amazon.com, is a "tour de force" that describes in tremendous detail a variety of calendar systems, and how dates are calculated in the respective systems.
In short: The X Window System in any reasonably recent iteration does not have any direct "Year 2000" problems. Clients may, of course, contain their own Y2K errors, but the base X system as distributed by the Open Group as well as by The XFree86 Project do not themselves provide any "Year 2000 exposures."
The people that tried to get rich selling books on Bible Codes sure wouldn't mind getting richer preying on peoples' lack of understanding of the so-called "Y2K Bug." I find this appalling.
Here is a remarkably exhaustive list of "interesting dates" that are critical points in various calendar systems.
Most of the current Y2K Web sites are written by men and (IMO) tend to be focused on how to try and "fix" the problem -- they tend to more analytical and emphasize the "big picture." Y2Kwomen doesn't deal with the technical side of the Y2K problem; my goal is to focus on the practical side of the problem -- where the rubber meets the road -- and how this will impact our families and us.
Just Because Y2K Is Over Doesn't Mean Programmers Are Done Creating Date Bugs.
I apparently won this award for quoting Papal legislation, written, quite naturally, in Latin, to provide evidence that 2000 was, apparently to some peoples' surprise, a leap year.
My thanks to Guy Harris for the nomination...
If this was useful, let others know by an Affero rating