For Developers
Unix time isn't the only epoch in wide use. Several major platforms quietly count time from a completely different starting point — and one of them has a 126-year-old bug baked permanently into it.
Most modern software counts time from the Unix epoch, January 1, 1970. But several widely used systems predate that convention, or were built independently of it, and still count from their own starting point today — mostly invisibly, until you need to move data between two systems that disagree.
Excel and Google Sheets store dates as a plain number of days since December 30, 1899. That specific date isn't a typo — it exists to compensate for a genuine bug: early Excel treated 1900 as a leap year, which it wasn't, adding a phantom February 29th that never happened. Rather than break every spreadsheet built on the flawed assumption, the bug was preserved permanently, and the epoch date was chosen specifically so that dates after March 1900 still come out correct despite it. It's one of the most famous "known bug, kept forever for compatibility" stories in mainstream software.
Classic Mac OS, and the older "1904 date system" still selectable in Excel for Mac, counts from January 1, 1904 instead. The date was chosen specifically so that 1904 — a genuine leap year — could serve as an unambiguous reference point, sidestepping the exact leap-year confusion that created Excel's 1900 bug in the first place.
.NET represents time as "ticks" — 100-nanosecond intervals — counted from January 1st of year 1. Because that starting point is so far in the past, the resulting numbers are enormous: over 600 quintillion ticks have elapsed by now, a number large enough that naive floating-point math can lose precision in the final digits if you're not careful to use proper integer arithmetic.
None of these systems are wrong, exactly — they're internally consistent, and each made sense given the constraints of when they were built. The risk shows up specifically at the boundary between systems: importing a raw numeric date from Excel into a database, or reading a .NET tick count in a language that doesn't have a built-in converter for it. Get the epoch wrong and the date doesn't fail loudly — it just becomes a plausible-looking wrong date, decades or centuries off, which is much harder to catch than an outright error.
The Historical Epoch Converter converts between all of these systems directly, including Excel's two variants, .NET ticks, Mac's classic epoch, GPS time, and the Julian day number used in astronomy.
Related
Convert between Excel, .NET, Mac, GPS, and Unix time.
How different languages handle epoch time by default.
Another epoch-related overflow, in 32-bit Unix time.