Y2K problem
The Y2K problem is a problem in computer hardware and software programming where unintended results may take place if a year represented as two digits is not interpreted correctly. There are two basic aspects to the Y2K problem:
- Determining the correct value of a 2-digit year. Example - does "20" represent 1920 or 2020?
- Performing date-based calculations correctly. Example - if you subtract "97" (1997) from "07" (2007), will you get 10 years, or minus 90?
The origins of the problem lie in the high cost of data storage in the early days of computing, where storing a date in 6 digits (mmddyy) versus 8 (mmddyyyy) could result in significant savings. If the specifications for a piece of software were well-designed this is not a problem, but in many cases the century component of a 2-digit year was assumed instead of being explicitly accounted for in programming.
As the 1990's progressed, it was determined that there was a significant base of legacy software and hardware that might not work correctly once the default century portion of current dates changed from "19" to "20". While the code to handle 2-digit years correctly is not complex, the challenge was in identifying every instance of bad code, and correcting & retesting it before January 1, 2000.
There are varying estimates of the total costs related to performing hardware and software analysis, remediation and testing related to the Y2K issue. Some estimates in the late 1990's put the worldwide cost in the trillions of dollars, but this has been dismissed as hyperbole. A typical exaggeration was counting hardware/software upgrades that happened to be Y2K-compliant as Y2K-related expenditures, when they would have taken place anyway. A more accurate estimate of the truly Y2K-driven analysis and cleanup effort would be in the tens of billions of dollars.[1]