ISO 8601: Ending The Date Wars And Confusing Everyone Equally

There’s a document I had to sign to wrap up a community responsibility in rural Oxfordshire. At the bottom, dotted lines for signature and date. My usual illegible scrawl for a signature, and scribble in the date below it. Then there’s the moment when the lady handling the form scans it with a puzzled face for a minute, before accepting it with a smile. She’s just been ISO’d!

A Pi Day pie
I’m telling you, you’ve got Pi Day wrong. Evan Shelhamer, CC BY 2.0.

Where I come from in England, it’s the norm to represent dates in ascending order: day, month, year. Thus the 4th of March 2021 becomes 04/03/2021 when written down on a form. This is entirely logical, and makes complete sense given the way a date is said aloud in English and other languages.

Meanwhile in America it’s the norm to represent dates in a different manner: month, day, year. Thus March 4th, 2021 becomes 03/04/2021 when written down on a form. This is also entirely logical, and makes complete sense given the way dates are pronounced in American English.

As someone whose job entails crossing the Atlantic in linguistic terms, I am frequently confused and caught out by this amusing quirk of being divided by a common language. Is 03/04/2021 the 3rd of April or March 4th? “Why can’t Americans use a logical date format!” I cry as in a distant transatlantic echo I hear my friends over there bemoaning our annoying European ways. It’s doubtful that this divergence has caused any satellites to crash, but it sure can be annoying.

Confusing Everyone For Over Three Decades

So I took a stand. A couple of decades ago I adopted ISO 8601 in writing dates, an international standard that’s been with us for well over three decades. It too is an entirely logical way to express time, but unlike the two mentioned earlier it’s not tied to any linguistic quirks. Instead it starts with the largest unit and expresses a date or time in descending order, and extends beyond dates into time. Thus the date on my form that caused the puzzlement was 2021-03-04. I’m guessing that here at Hackaday I’m preaching to the choir as I certainly won’t be the only one here using ISO 8601 in my daily life, but while we’re talking about alternative date formats within our community it’s an opportunity to take stock of the situation.

A UNIX epoch clock
Just in case you thought UNIX time wasn’t practical, take a look at this epoch clock.

UNIX time is probably the most instantly recognisable of all our measurement schemes, being a count of seconds elapsed since the Unix epoch of 1970-01-01T00:00:00+00:00 UTC. Coincidentally this is also an auspicious date for many readers, as it’s our birthday. If I’d written the 4th of March on that form as 1614816000 though I would have been met with complete incomprehension, so aside from the occasional moment of coming together to observe a rollover it’s not something we use outside coding.

But it does lead neatly to another question: since UNIX time is most often expressed in text as a base-10 number, why on earth does our clock time work in base 60 for seconds, base 12 or 24 for hours, and then base 12 for months? Why don’t we use a base 10 metric time system?

It makes sense for our annual calendar and the length of our day to be derived from Earth’s orbit, as we use dates as a measure of season and times as a measure of the daily progress rather than simply elapsed periods. We owe our twelve-hour days and nights to the ancient Greeks and our 60 seconds and minutes to the ancient Babylonians, while our twelve months come from the ancient Romans. It’s clear that a 365.24-day year with four seasons doesn’t divide neatly into ten months, so we’re at the mercy of our own set of celestial bodies when talking about dates. But surely we could move on from ancient Greece and Babylon when it comes to the time of day?

Liberté, Égalité, Ponctualité!

A 10-digit Revolutionary French clock. DeFacto, CC BY-SA 4.0
A 10-digit Revolutionary French clock. DeFacto, CC BY-SA 4.0

Probably the most famous attempt at a decimal calendar came in the aftermath of the French Revolution; the French Republican calendar perhaps wisely stuck with twelve months but made each of them of three 10-day weeks, and then split the day by 10 hours, with each further subdivision being by base 10. The months each had 30 days, with the remaining 5 days (or 6 in leap years) being public holidays.

It came to an official end when the revolutionary government that had introduced it was replaced by that of Napoleon. Unlike other French Republican measurements such as the meter, it evidently didn’t provide enough advantage for its popularity to outlive its political origins.

There’s an interesting parallel in the decimalisation of British currency in 1971.  Previously, a pound was 20 shillings, each of which were 12 pence. Afterwards, a pound became 100 new pence, and that’s stuck. Despite some people’s lingering nostalgia for the old system, the utility of decimialisation was self-evident.

The moral of the French time-decimalization story was that people simply use a calendar and time system to tell the date and time. When you need to do frequent arithmetic, as is the case with currency, distance, or weights, this is made significantly easier through decimals. But when nature hands you four seasons, you’re pressed into twelve months. Perhaps when we slip the bonds of Earth, we’ll use decimal Stardates, but in the mean-time, ISO might just be the way to go.

Header: Rama, CC BY-SA 2.0 FR.

Set Your Clocks To Decimal Time

Many stop lights at street intersections display a countdown of the remaining seconds before the light changes. If you’re like me, you count this time in your head and then check how in sync you are. But did you know that if the French had their way back in the 1890s when they tried to introduce decimal time, you’d be counting to a different beat? Did you know the Chinese have used decimal time for millennia? And did you know that you may have unknowingly used it already if you’ve programmed in Linux? Read on to see what decimal time is along with the answers to these questions.

Continue reading “Set Your Clocks To Decimal Time”

Decimal Time Clocks In Under 1 KB

Humans historically have worked well with decimal numbering systems. This is probably due to the fact most of us have ten fingers, which make counting in base ten easy. Yet humanity seems to doggedly stick to the odd duodecimal/sexagesimal time system. [Danjovic] is bringing a bit of sanity into the mix with a decimal clock he calls DC-10. He’s entered his clock into our 1 kB Challenge.

DC-10 builds upon C10, the decimal time display system created by [KnivD] on Hackaday.io.

Here’s how it works:

  • 1 year = 365.25 days (we can’t change this anyway)
  • 1 day = 100 intervals (the equivalent of ‘hours’)
  • 1 interval = 100 centivals (equivalent of ‘minutes’)
  • 1 centival = 100 ticks (equivalent of ‘seconds’)
  • 1 tick = 0.0864 current seconds.

1kb-thumb[Danjovic’s] implantation displays intervals and centivals, exactly what you would need to know the current time of day. He used a Microchip PIC16F628 running from a 4 MHz clock. time is displayed on seven segment LEDs. The PIC is programmed in C, using the classic version of Microchip’s own IDE: MPLAB 8.92. The code uses 297 program words. Since the ‘628 uses 14-bit instructions, that equates to just under 520 bytes. Perfect for the 1 kB challenge!

If you have a cool project in mind, there is still plenty of time to enter the 1 kB Challenge! Deadline is January 5, so check it out and fire up your assemblers!