Unix epoch
In computing, the 'Unix epoch' is the representation of points in time as the number of non-leap seconds since 00:00:00 UTC on January 1 1970, introduced by the Unix operating system, standardised in POSIX, and later adopted by the Java programming language and JavaScript. Because many computers today store the number of seconds as a 32-bit signed integer, the Unix epoch is often said to last 231 seconds, thus "ending" at 03:14:07 Tuesday, January 19, 2038 (UTC).
Storage formats for Unix times
In POSIX conforming systems, the type time_t
is often used to represent times. It is an arithmetic type in the C programming language. There is no requirement that time_t
be a 32-bit quantity (it could be a 64-bit integer or a floating point in double format), but most systems define time_t
as a signed 32-bit integer, and many application programs may assume it, or may store values in a 32-bit type. A signed 32-bit integer type can represent numbers ranging from -231 to 231 - 1, that is, -2,147,483,648 to 2,147,483,647. In this format, time_t will run out of positive integers 231-1 seconds (that is 24855 days, 3 hours, 14 minutes and 7 seconds) after the Epoch, in the year 2038, and thus cannot represent times beyond that point.
Effects of the 2038 rollover
Programs which must handle times beyond the rollover date will need to be changed to accommodate a shift from 32-bit to 64-bit representation, not unlike the Year 2000 problem. Adapting existing programs may be as easy as re-compiling them with header files that declare time_t
as a 64-bit integer, but other programs make deep assumptions as to the nature of time_t
. Also, the source code to some software packages may have been lost by then, in which case programmers might have to reverse engineer the software to change its date behavior. In fact, some claim that the expiration of the Unix epoch timeframe may cause more damage than was predicted for the Y2K bug.
Trivia
109 seconds after the start of the Unix epoch was 01:46:40 UTC on September 9, 2001, a moment known to some as the Unix billennium.
230 (1,073,741,824) seconds from the start of the Unix epoch, or exactly halfway between the first moment of the year 1970 and 03:14:07 on 19 January 2038, was 13:37:04 UTC on January 10, 2004. This was the first time value to require 31 bits of storage. Curiously, the digits at this time spell "1337".
In Vernor Vinge's novel A Deepness in the Sky, it is revealed that the Qeng Ho interstellar traders use the Unix epoch as their timekeeping system.
External Links
http://www.unixtimestamp.com/ - Current timestamp.