|
Year 2000 (Y2K) and Year 2038 compliance
The approach of year 2000, was quite a challenge for the computer
industry, as many older software and hardware systems, wasn't designed
with this situation in mind. The problems involves not only pure
date calculating routines, e.g. number of months between two dates, but
also more subtle consequences, like validation of dates entered, where
many systems would simply fail, at the turn of the century into year
2000.
TCS and WinTCS did very early on, support 4-digit year representations,
thereby avoiding the Y2K issue completely, and all date routines were
also checked for compliance with regard to the year 2000 leap year
situation.
Signed versus unsigned 32-bit - running to year 2038 or 2106 ?
The internal clock a UNIX system, counts the number of seconds,
since the birth of UNIX, defined as 00:00:00 GMT on January 1st,
1970. Most systems hold this value in a signed 32-bit
variable, which can not hold any number larger than 2,147,483,647 -
which corresponds to :
January 19th in year 2038 at 03:14:07
GMT/UTC time zone
the following second, this value will wrap around and become the
huge negative number -2,147,483,648 - which will definitely break
all time and date-calculating routines in a computer system.
With unsigned 32-bit variables things look a lot better, as the highest number
is then 4,294,967,295 corresponding to :
February 7th in year 2106 at 06:28:15
GMT/UTC time zone
Before then, all systems needs to be changed to 64-bits or higher.
The date range of TCS and WinTCS
TCS and WinTCS are
using unsigned 32-bit variables and routines everywhere,
and will therefore continue to run until year 2106, and will not
have a problem with the upcoming year 2038 issue.
The valid date range for TCS and WinTCS is :
From the birth of TCS, 01/01/1985 up to and
including 05/02/2106,
which is about 100 years from now.
|