In case you haven't heard ...

greenspun.com : LUSENET : TimeBomb 2000 (Y2000) : One Thread

"""""""""""The year 2000 problem arose because many computers were programmed to read only the last two digits of a year and assume that the first two are "19." As a result, on Jan. 1, 2000, those computers could register the date as 1900, causing all sorts of chaos."""""""""

-- Will Never Understand (duh@forever.more), November 25, 1998

Answers

Actually that definition bugs me. I know it is the "standard" definition of the problem that is often quoted because it's perhaps easy to understand, however it is not really accurate.

In fact, computers do not assume that the first two digits are "19". A computer that has a date of 3/6/75 (under a dd/mm/yy protocol) does not assume that the year is 1975. It only knows that the year is 75. To the computer, there are no 1900's or 1800's or any dates in the year field other than the range of 00 to 99.

Therefore, on Jan 1, 2000, those computers will not register the date as 1900. They will simply register the date as Jan 1, 00.

In computers with a two digit space for the year field that print out four digits for the year (e.g. 1975), the 75 is an actual field of two digits, and the 19 is just a constant that has been set to appear on the display before the 75.

Not trying to be picky, but to me this definition irks me only slightly less than the often quoted "planes falling from the sky" scenario.

-- Craig (craig@ccinet.ab.ca), November 26, 1998.


It's 1900 only in the sense that "00" is 99 less years than "99". Of course what we all wish is that computers would know that "00" is one (year) greater than "99".

Unfortunately, the computer knows better!

(19)97 --- (19)98 --- (19)99 --- (19)00

-- Kevin (mixesmusic@worldnet.att.net), November 26, 1998.


Happy Thanksgiving Kevin, Craig. I have found that most people think of only the 2-digit problem when Y2K is brought up. Actually, there are several related problems which are all Y2K related like the year 2000 being a leap-year, non-compliant embedded systems/chips including firmware, forced 19xx, system clock rollover, and special processing ( purge records, false end-of-file, abnormal termination, attempted division by zero) triggered by unremediated code. This isn't even all of it, just a sample to show how ubiquitous Y2K is.

-- Rob Michaels (sonofdust@net.com), November 26, 1998.

Kevin...

I understand what you are saying. However, the problem is that the computer does not understand that it is in 1999, therefore it does not think that the year becomes 1900 after the rollover. It only understands than it is in the year 99. The problem in this case is not that the computer cannot roll over to 2000, but rather that it cannot roll over to 100.

Technically, it is not really a millennium problem, but rather a centarium problem (if that's not a real word, replace with centennial or centanimium or biggadaninetinine).

In perspective, we would have exactly the same problem with the rollover from 1899 to 1900 if computers had been invented then. Only difference being it would not have been incorrectly referred to as the millennium bug.

-- Craig (craig@ccinet.ab.ca), November 26, 1998.


Craig -

Congratulations! You're the second person I've found who objects to the common explaination of "computers confusing 1900 with 2000"

I wrote this in February... http://www.y2ktimebomb.com/Techcorner/DE/de9807.htm

Short answer... there is no two digit number AFTER 99...and results will there for be unpredictable.

- David

-- David Eddy (deddy@tiac.net), November 26, 1998.



Just a point for clarification. Sometimes programmers have hardcoded the number 19 as a constant and then concatenated the two-digit year with this constant. (put them together). So even though only the last two digits of the year field are in memory, the concatenated field is stored as four digits, the first two of which are 19.

This means that if you print out the 4 digit field the answer appears correct (until 2000) but there is still the two-digit year in memory that can be used for processing. This is a very common technique for showing a four digit year in the title/heading of an output report when in actuality the year is in two digits. This problem is sometimes referred to as the 'Forced 19xx' problem, since the 19 is not part of the year, you force it.

So, when the two-digit year becomes 00, if it is being concatenated with a constant of 19 still, you will get 1900.

-- Rob Michaels (sonofdust@net.com), November 27, 1998.


Moderation questions? read the FAQ