What Is Epoch Time All About?

Bg Epoch

Computers can interpret only 1s and 0s, making it a bit complicated to interpret dates in terms of year, month and day. Scientists came up with a solution to help computers understand dates: provide the date to the computer as a numerical value in terms of seconds and teach it to interpret that value as a human-readable date. This seconds value will be calculated by picking a point of reference and counting the number of seconds elapsed since that point. This is what Epoch Time is about.

Introducing Epoch Time

In the English dictionary, “Epoch” is defined as an instant of time considered to be the starting point for a particular period or event. In Computing, “Epoch Time” refers the starting point used to calculate the number of seconds elapsed.

Epoch Time in Common Operating Systems

Epoch Time in the real world starts at the time of 00:00:00 UTC, where UTC stands for Coordinated Universal Time.

Apple macOS considers its Epoch Time as starting from January 1, 1904.

Microsoft Windows considers its Epoch Time as starting from January 1, 1601.

Unix and Linux Systems consider their Epoch Time as starting from January 1, 1970. This time is also referred to as Unix Time and Unix Epoch.

What Will Unix Time Be at this Moment?

Thedate command can be used to find the unix time at any moment, as shown below.

Date Epoch

The large numerical value is the number of seconds elapsed since 00:00:00 UTC January 1, 1970. To interpret this date as a human, it can be fed as input again to the date command as shown below.

Date Epoch Human

To keep it simple, by default, the date command displays a human-readable date and time along with time zone information.

Date Original

Who Decided the Unix Time?

In the 1960s and 1970s, Dennis Ritchie and Ken Thompson built the Unix system together. They decided to set 00:00:00 UTC January 1, 1970, as the “epoch” moment for Unix systems.

How Effective Is Unix Time?

Unix Time is stored as a 32-bit signed integer value. As every second ticks away, the value keeps increasing, and it will eventually reach its limitation on 03:14:07, 19 January 2038 as the 32-bit signed integer value will overflow and reset itself to December 13, 1901. When this happens, it will disrupt numerous time-bound activities on a system like software licenses, backup operations, etc. This issue is referred to as “Year 2038 problem.”

Some people suggested the 32-bit value should be changed to an unsigned integer value. This meant Unix systems would be able to interpret dates up to the year 2106. However, this was found to not be effective for dates prior to 1970.

New Way to Store Unix Time

Developers soon came up with a 64-bit signed integer value to store Unix time. This means Unix time will be valid for approximately the next 14 billion years. This is nearly 22 times greater than the current estimated age of the universe! This should last to the end of the universe (estimated to be 13.8 billion years) Newer 64-bit systems can handle the new Unix time but not older 32-bit systems. The Linux kernel introduced this 64-bit value to store the number of elapsed seconds since the epoch from version 2.6.19.

By the year 2038, it is believed that 32-bit systems will be out of vogue, so this should not be a problem. Embedded systems used in cars like Engine Control Unit (ECU) are time-dependent and 32-bit based. This is expected to work until the year 2038.

Fun Fact

A similar situation was observed with Psy’s Gangnam Style music video uploaded on YouTube, that previously used a 32-bit value to track the number of views for a video. That video garnered so many views that it crossed the 32-bit threshold. YouTube has since begun using a 64-bit value to track the view count for its videos, stating they did not expect the number of views for a video to cross the 32-bit value.

5 comments

  1. I think there’s a mixup in this paragraph:

    “…Unix time will be valid for approximately the next 14 billion years. This is nearly 22 times greater than the current estimated age of the universe!”

    Cosmologists generally agree that the current age of the universe is “…around 13.8 billion years (as of 2015) – 13.799±0.021 billion years within the Lambda-CDM concordance model.” – condensed from Wikipedia, see references there.

  2. I liked this, and would like a similar detailed explanation of Windows Epoch, and I’m sure our Mac buddies would like the same.

  3. “Developers soon came up with a 64-bit signed integer value to store Unix time. This means Unix time will be valid for approximately the next 14 billion years. This is nearly 22 times greater than the current estimated age of the universe!”
    Sorry but the current estimate for the age of the Universe is 13.8 Billion years. If the 64 bit UNIX time will be valid for the next 14 Billion years, that will only be as long as the Universe has already existed, NOT “22 times greater”.

  4. I think there was an editing error. Although the sentence “This is nearly 22 times greater than the current estimated age of the universe!” was crossed out, it really should have been removed. Pretty sure the author realized the statement wasn’t correct.

Leave a Comment

Yeah! You've decided to leave a comment. That's fantastic! Check out our comment policy here. Let's have a personal and meaningful conversation.