Classic Mac OS vs macOS Epochs

Published: April 5, 2026 | Category: Digital Timekeeping

Apple's ecosystem has a fascinating history of timekeeping, split between two entirely different eras: the Classic Mac OS and the modern UNIX-based macOS (and iOS). As Apple's underlying architecture radically shifted over the decades, so too did its concept of "zero."

The Classic Mac OS Epoch (1904)

If you used a Macintosh computer before the year 2001, its internal clock counted the number of seconds since January 1, 1904.

Why 1904 and not 1900? The developers intentionally skipped 1900 to avoid dealing with a quirk of the Gregorian calendar. In the Gregorian system, years divisible by 100 are not leap years unless they are also divisible by 400. Therefore, the year 1900 was not a leap year. By starting at 1904 (which was a leap year), the simple rule "every fourth year is a leap year" worked flawlessly for the entire lifespan of the 32-bit Classic Mac OS clock (which would wrap around in the year 2040).

The Modern macOS / iOS Epoch (2001)

When Steve Jobs returned to Apple and spearheaded Mac OS X (now macOS), the entire operating system was rebuilt on a UNIX foundation (Darwin). Naturally, the low-level BSD UNIX components measure time against the standard UNIX Epoch of January 1, 1970.

However, for Apple's high-level frameworks like Cocoa, Core Foundation, and Swift's Date, Apple defined a new, proprietary zero-point: January 1, 2001, at 00:00:00 UTC.

This modern epoch represents the debut year of Mac OS X. In these modern frameworks, time is measured not in integers but in double-precision floating-point numbers representing seconds. This `CFAbsoluteTime` structure allows for sub-millisecond precision.

Interoperability

Because low-level POSIX functions use the 1970 UNIX Epoch and high-level Foundation frameworks use the 2001 Apple Epoch, Apple developers frequently deal with an offset behind the scenes. The difference between January 1, 1970, and January 1, 2001, is exactly 978,307,200 seconds. While modern programming languages abstract this away, knowing Apple's historical epochs is essential for reverse-engineering legacy files or maintaining very old archives.