Content deleted Content added
m →32-bit overflow: switch to main |
|||
Line 263:
==32-bit overflow==
{{main|Year 2038 problem}}
At 03:14:08 UTC on [[January 19]] [[2038]] (+2<sup>31</sup>), a 32-bit signed integer representation of Unix time will [[arithmetic overflow|overflow]]. Systems using a 32-bit signed integer Unix '''time_t''' will therefore be unable to represent that time, or any later, and will likely wrap around to 20:45:52 UTC on [[December 13]] [[1901]], with integer value -2<sup>31</sup>
Programs which must handle times beyond the overflow date will need to be changed to use a 64-bit '''time_t''', a [[bignum]] representation of Unix time, or some other means of representing points in time. This is not unlike the [[year 2000 problem]]. Adapting existing programs may be as easy as re-[[compile|compiling]] them with header files that declare '''time_t''' as a 64-bit integer. However this will create problems if and when the time_t value is passed from that program to other code that has not had the definition changed (such as the system's C shared library). Also some other programs make deep assumptions as to the nature of '''time_t''' and the [[source code]] to some software packages may have been lost by then, in which case programmers might have to [[reverse engineering|reverse engineer]] the software to change its date behavior. Some claim that the expiration of 32-bit '''time_t''' may cause more damage than was predicted for the year 2000 problem.
|