The information below pertains to Ctime and the impact that it has on products’ ability to work into the 21st century. Ctime is a function of the C programming language that is used to calculate time. There is a good deal of attention being paid to this topic as organizations are looking to deal with the Year 2000 issue. The reason this issue becomes germane to the Year 2000 is because its use places a finite time limit on the application that is making use of it.
The ANSI time functions as well as the MFC CTime depend on an internal variable time_t to store time values. The variable time_t is a 32-bit long int that can hold values up to 2147483647 before it overflows. The calculated time is based on the time_t variable, which is used as an offset (in seconds) from January 1, 1970. The maximum number of seconds that can be stored in the time_t value is 2147483647–-a little over 68 years. This means that Ctime can only be used to calculate times up to the year 2038 (1970 + 68 years).
offset from January 1, 1970
typedef long time_t; /* time value */
Integer Limits LONG MAX 2147483647
3600 sec/hr
86400 sec/day
31536000 sec/year
2147483647 / 31536000 = 68.09625973491 (ignoring leap years for this rough calculation)
Here is another independent calculation taken from another e-mail thread discussing Year 2000 issues:
The MFC documentation for CTime::CTime states that the valid range for the nYear parameter is 1970 to 2038 (actual range is midnight, January 1, 1970, to January 18, 19:14:07, 2038). These limits are based on the underlying time_t value that mktime creates from the struct tm. Most, if not all, ANSI C systems use 1970 as the reference date and overflow in 2038 (time_t is a long int that holds the number of seconds since the reference date).
There has been a considerable amount of inconsistent information about this topic over the past few months. For that reason, Microsoft chose to place a 35-year timeframe for our Year 2000 statement of compliance. In this way, we address concerns on this issue expressed to us by the greatest number of customers.
ALL COMMUNICATIONS OR CONVEYANCES OF INFORMATION TO YOU CONCERNING MICROSOFT AND
THE YEAR 2000, INCLUDING BUT NOT LIMITED TO THIS DOCUMENT OR ANY OTHER PAST,
PRESENT OR FUTURE INFORMATION REGARDING YEAR 2000 TESTING, ASSESSMENTS,
READINESS, TIME TABLES, OBJECTIVES, OR OTHER (COLLECTIVELY THE "MICROSOFT
YEAR 2000 STATEMENT"), ARE PROVIDED AS A "YEAR 2000
READINESS DISCLOSURE" (AS DEFINED BY THE YEAR 2000 INFORMATION AND
READINESS DISCLOSURE ACT) AND CAN BE FOUND AT MICROSOFT’S YEAR 2000 WEBSITE
LOCATED AT http://microsoft.com/year2000/ (the
"Y2K WEBSITE"). EACH MICROSOFT YEAR 2000 STATEMENT IS PROVIDED
PURSUANT TO THE TERMS HEREOF, THE TERMS OF THE Y2K WEBSITE, AND THE YEAR 2000
INFORMATION AND READINESS DISCLOSURE ACT FOR THE SOLE PURPOSE OF ASSISTING THE
PLANNING FOR THE TRANSITION TO THE YEAR 2000. EACH MICROSOFT YEAR 2000 STATEMENT
CONTAINS INFORMATION CURRENTLY AVAILABLE AND IS UPDATED REGULARLY AND SUBJECT TO
CHANGE. MICROSOFT THEREFORE RECOMMENDS THAT YOU CHECK THE Y2K WEBSITE REGULARLY
FOR ANY CHANGES TO ANY MICROSOFT YEAR 2000 STATEMENT. EACH
MICROSOFT YEAR 2000 STATEMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND. CONSEQUENTLY, MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. MOREOVER, MICROSOFT DOES NOT WARRANT OR MAKE ANY
REPRESENTATIONS REGARDING THE USE OR THE RESULTS OF THE USE OF ANY MICROSOFT
YEAR 2000 STATEMENT IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY, OR
OTHERWISE. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY MICROSOFT OR ITS
AUTHORIZED REPRESENTATIVES SHALL CREATE A WARRANTY OR IN ANY WAY DECREASE THE
SCOPE OF THIS WARRANTY DISCLAIMER. IN NO EVENT SHALL MICROSOFT OR
ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER REGARDING ANY MICROSOFT YEAR
2000 STATEMENT INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF
BUSINESS PROFITS, PUNITIVE OR SPECIAL DAMAGES, EVEN IF MICROSOFT OR ITS
SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES
DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR
INCIDENTAL DAMAGES, SO THE FOREGOING LIMITATION MAY NOT APPLY TO YOU. THE
INFORMATION CONTAINED IN EACH MICROSOFT YEAR 2000 STATEMENT IS FOUND AT THE Y2K
WEBSITE AND IS INTENDED TO BE READ IN CONJUNCTION WITH OTHER INFORMATION LOCATED
AT THE Y2K WEBSITE, INCLUDING BUT NOT LIMITED TO MICROSOFT’S YEAR 2000
COMPLIANCE STATEMENT, THE DESCRIPTION OF THE CATEGORIES OF COMPLIANCE INTO WHICH
MICROSOFT HAS CLASSIFIED ITS PRODUCTS IN ITS YEAR 2000 PRODUCT GUIDE, AND THE
MICROSOFT YEAR 2000 TEST CRITERIA.
ANY MICROSOFT YEAR 2000 STATEMENTS MADE TO YOU IN THE COURSE OF PROVIDING
YEAR 2000 RELATED UPDATES, YEAR 2000 DIAGNOSTIC TOOLS, OR REMEDIATION SERVICES
(IF ANY) ARE SUBJECT TO THE YEAR 2000 INFORMATION AND READINESS DISCLOSURE ACT
(112 STAT. 2386). IN CASE OF A DISPUTE, THIS ACT MAY REDUCE YOUR LEGAL RIGHTS
REGARDING THE USE OF ANY SUCH STATEMENTS, UNLESS OTHERWISE SPECIFIED BY YOUR
CONTRACT OR TARIFF.