Epoch Time Explained
Updated: May 2026
Epoch time is the foundational time reference of all modern computing. Understanding it — not just knowing its definition, but understanding why it was designed this way — removes an entire class of confusion around dates, timezones and timestamps.
Free · No upload · Instant
What "epoch" means
In timekeeping, an epoch is a reference point — a fixed moment from which all other times are measured. The choice of epoch is arbitrary; what matters is that everyone agrees on the same one. The astronomical Julian Date uses noon on January 1, 4713 BC. GPS time uses midnight January 6, 1980.
The Unix epoch is January 1, 1970, 00:00:00 Coordinated Universal Time (UTC). All Unix timestamps express time as a signed integer count of seconds from that moment. Times after the epoch are positive; times before are negative.
Why 1970 specifically?
The choice of 1970 was made by Ken Thompson and Dennis Ritchie at Bell Labs while developing Unix in the late 1960s. The Unix operating system was designed and refined between 1969 and 1973. Choosing a recent past date kept the numbers small and positive for all practical dates the system would encounter — file modification times, user session records, process start times.
The year 1970 also sits conveniently in the recent past relative to when Unix was being developed, ensuring that timestamps for all real events the system would track were positive without requiring a very large offset.
Earlier proposals from the pre-Unix era used different epochs. The MULTICS operating system (which Unix partly replaced) had its own time reference. Unix standardised on 1970, and as Unix spread through academia and industry in the 1970s and 1980s, the epoch spread with it — becoming the de facto standard before any formal standard body could convene.
Epoch time vs. calendar time
Calendar time is a human representation: year, month, day, hour, minute, second, timezone. It is complex because months have different lengths, years have different lengths (leap years), and local offsets change (DST). Arithmetic on calendar time requires rules for all of these edge cases.
Epoch time avoids all of that. It is a simple integer. Adding 86 400 to a Unix timestamp always moves forward exactly one day, because 86 400 seconds = 24 × 3600 = one day. No month-length lookup, no DST offset lookup, no leap-year check. The only exception is leap seconds — which the POSIX specification deliberately ignores, treating every day as exactly 86 400 seconds long.
This is why databases and APIs store timestamps as integers. Display logic — "show this in Paris timezone on a French-formatted date" — belongs at the application layer, where it can be changed without touching the stored data.
Competing epochs and why Unix won
- IBM EBCDIC / MVS — January 1, 1900. Still used in COBOL environments and SWIFT banking messages.
- NTP (Network Time Protocol) — January 1, 1900. 32-bit unsigned, overflowed in 2036; NTP Era 1 started then.
- GPS — January 6, 1980. 10-bit week number overflowed in 1999 and again in 2019.
- Windows FILETIME — January 1, 1601. 100-nanosecond intervals, 64-bit, effectively no overflow risk.
- Apple Core Data — January 1, 2001. Used internally by iOS and macOS Core Data stores.
Unix epoch won in web and server contexts because Linux won. Every major cloud provider, web server, container runtime and API framework runs on Linux or a POSIX-compatible system. JavaScript's Date was specified to use the Unix epoch. So did Java, Python, Ruby, PHP, Go and Rust. The epoch is now a de facto standard with no realistic successor.
Milestones in Unix time
0— January 1, 1970, 00:00:00 UTC. The epoch itself.1 000 000 000— September 9, 2001, 01:46:40 UTC. Unix time passed one billion.1 234 567 890— February 13, 2009, 23:31:30 UTC. The "Unix timestamp party" celebrated widely online.1 500 000 000— July 14, 2017, 02:40:00 UTC. 1.5 billion seconds.1 700 000 000— November 14, 2023, 22:13:20 UTC.2 000 000 000— May 18, 2033, 03:33:20 UTC. Two billion seconds — upcoming.2 147 483 647— January 19, 2038, 03:14:07 UTC. The Year 2038 problem (32-bit signed overflow).