#01 · Lab
Date Decoder
A date in five digits, immune to the millennium bug, where adding a week means adding 7. A timestamp in ten digits that carries the time as well. Formats born to make the numbers add up, alive and well in legacy systems: here they are read in plain sight.
The format
Numbers in place of dates
Unix timestamps and serial dates were never quirks: they were design decisions, and in legacy systems they are still in place. This is the story of those formats, and of the tool that puts them back in plain sight.
Anyone working on banking, financial or insurance systems, and more generally on platforms with roots a few decades deep, sooner or later meets a date that doesn’t look like a date.
46243is a serial date: the number of days counted from 1900.1786233600is a unix timestamp: the seconds elapsed since January 1, 1970.20260809is perhaps the most readable of the three: year, month and day joined into one number.
Three disguises for the same day, August 9, 2026.
The first reaction is to wonder why anyone would write dates that way instead of in plain form. The answer is that it was never a quirk: it was the best solution available, and in many cases it still is.
Serial dates
Five digits, and the numbers add up
Go back to the nineties. Memory and disk space cost money, and a bank archive doesn’t count records in hundreds: it counts them in millions. Every character saved on every date of every row turned into real space, and a serial date asks for five where a written date asks for six at the very least.
In the same move that format carried a second advantage, and not a small one: it was immune to the millennium bug. The year-2000 problem came from six-digit dates, where the year took two and the century was implied. A serial date implies nothing, it is a counter that grows: 1999 and 2001 are simply two numbers, one larger than the other. No window to define, no ambiguity to resolve.
And then there is the part that saves time every single day. Being progressive, these dates can be worked out in your head. A week later? Plus seven. A hundred and fifty days earlier? Minus a hundred and fifty. How many days between two dates? A subtraction. The same operations on written dates need database or library functions; here an addition is enough, and you write it straight into the query.
Unix timestamps
Ten digits that carry the time as well
The unix timestamp comes from another tradition, Unix and Linux systems rather than the banking world, and solves a more ambitious problem: not the day, but the instant. Ten digits hold the date and the time to the second. Writing the same information in plain form would take at least fourteen: eight for the date, six for the clock.
And it is a format that holds. It stays at ten digits into the next century, with nothing to widen. The only real limit is not about digits but about the container the number is kept in: systems that store it in 32 bits stop on January 19, 2038. That is a storage problem, not a format one, and anyone keeping that number in 64 bits has no deadline ahead.
The tool
How the Date Decoder works
The tool has a single field and asks nothing up front. You paste the value, be it a timestamp in
seconds or milliseconds, a serial date, a compact YYYYMMDD date or a plainly written one, and the
decoder recognizes on its own what it is looking at. The assumption it made is always declared, and
can be changed with one tap when the detection doesn’t match your intention.
From there the value comes out translated into every other form: local date, UTC, ISO 8601, unix in seconds and milliseconds, serial date. Every row copies with one click, ready to drop into a query or a spreadsheet.
The other half of the tool is a calendar. You navigate the year, pick a day or a range, and get the start and end timestamps of the day with their serials: exactly what you need to build a time filter on a data extraction. That is the use case the whole thing started from.
The assumptions
The details that make the difference
Spreadsheet dates carry a historical error. Lotus 1-2-3 treated 1900 as a leap year; Excel copied
the behaviour for compatibility with existing files and never went back. The result: serial 60
corresponds to February 29, 1900, a day that never existed. The Date Decoder knows the story, flags
the phantom day and reads it as February 28. And when a value cannot be represented, a date before
1900 for instance, it says so openly instead of producing an approximation. Old Excel for Mac also
used a system with a 1904 epoch: if your numbers look four years off, that’s the cause.