Zero-indexing the Gregorian calendar

Today is 2021-00-00. Happy new year.

My proposed calendar system is just the existing Gregorian calendar with all the fencepost errors fixed.

  • The last day of each month is moved to become day 0 of the following month.

  • The last month of each year is moved to become month 0 of the following year.

  • BCE is deprecated. Instead we just let the CE year number go to zero and then negative.

This new calendar is in fact an extension of the Gregorian calendar. There are no retroactive changes or discontinuities. All previously existing Gregorian dates and times continue to refer unambiguously to the same moments in time they always did. Your birthday still exists. The Fourth of July hasn't moved.

Transforming the old calendar into the new calendar is a two-phase process. In the first phase, we broaden the capabilities of the existing Gregorian calendar by explicitly extending the days of every month, the months of every year and the years of both the Common Era and... erm, the Before Common Era... forward and backward indefinitely.


  • "2020-12-32" is legal, and refers to the same day as "2021-01-01".

  • "2020-12-99", "2021-01-68", "2021-02-37" and "2021-03-09" all refer to the same day.

  • "2021-01-00" is legal, and refers to the same day as "2020-12-31".

  • 2000-00-00 is 1999-11-30, 2020-11-30 is 2021-00-00, 29 November is New Year's Eve and 30 November is now New Year's Day.

  • 2021-00-00 is also 1993-09-9953.

  • "1969-13" refers to the same month as "1970-01" - that is, January 1970.

  • "2021-00" refers to the same month as "2020-12".

  • "December 2020" still unambiguously means 2020-12.

  • "0 CE" is legal and refers to the same year as "1 BCE".

  • "-474 CE" is legal and refers to the same year as "475 BCE".

  • "-2019 BCE" refers to the same year as "2020 CE".

This increases the expressive power of the YYYY-MM-DD date format and acknowledges the "overflow" behaviour of many existing datetime handling systems, while also continuing to recognise all existing fixed dates.

In the second phase, observing that every moment in time has multiple valid expressions, we choose new, zero-indexed preferred forms for expressing years, days and months.

  • "475 BCE" is still accepted, but "-474 CE" is preferred.

  • "1999-12-31" is still accepted, but "2000-01-00" is preferred.

  • "1970-01-01" is still accepted and also still preferred.

This means that everything starts from zero; not only the hour, the minute, the second and the fraction of the second, but also the day, the month and the year.

There's only one other minor note. Because "December" must still always refer unambiguously to "month twelve", month zero gets a new name of its own: "Nulluary", which is just as easy to pronounce as "February", if not even easier.

  • "December 2020", "2020-12", "2021-00" and "Nulluary 2021" all refer to the same month.

  • "December 2020" is accepted, but "Nulluary 2021" is preferred.

Wow, this new calendar system has no drawbacks at all!

None whatsoever! And date arithmetic becomes so much easier!

Well. Except... the YYYY-MM-DD format becomes a little ridiculous (unambiguous, but still ridiculous) when we allow negative numbers in the month and day places. Yesterday, 2020-11-29, was technically also 2020-12--01, but, let's not, shall we? Also, allowing the month and day places to increase to three or more digits is frowned upon.

Also, for backwards compatibility purposes, "the first [day] of January" and "January first" still both refer to 1 January (YYYY-01-01), even though the first day of January is actually 0 January now.

And, any event taking place on, say the "first Tuesday after the first Monday in November" might need rescheduling. Also, the definition of "blue moon".

Also, unpopularity of weird new month and day names...

And, yeah, New Year's Day was just now.

Century numbering

Existing terms such as "21st Century" continue to unambiguously refer to the same time periods as before.

  • "21st Century" or "21st Century CE" refers to the time period from 2001-01-01 to 2100-12-31 inclusive.
  • "1st Century" or "1st Century CE" refers to the time period from 0001-01-01 to 0100-12-31 inclusive.
  • "1st Century BCE" refers to the time period from 1 January 100 BCE to 31 December 1 BCE inclusive, which is -0099-01-01 to 0000-12-31.

As before, we extend these numbers forwards and backwards indefinitely.

  • "0th Century" or "0th Century CE" refers to the time period from -0099-01-01 to 0000-12-31 inclusive, which is the same as "1st Century BCE".
  • "-1st Century" refers to -0199-01-01 to -0100-12-31 inclusive, which is the same as "2nd Century BCE".

However, these time periods are arbitrary and have obvious fencepost errors. This entire system for referring to centuries is, while still accepted, not preferred. The preferred approach is as follows, eschewing ordinals:

  • "Century 20" refers to the time period where the year number is 20XX: from 2000-00-00 to 2099-11-29 inclusive. At the time of writing, we are in Century 20.
  • "Century 1" refers to 0100-00-00 to 0199-11-29.
  • "Century 0" refers to 0000-00-00 to 0099-11-29 inclusive.
  • "Century -4" refers to -0400-00-00 to -0301-11-29 inclusive.

Note that we do still kind of have a fencepost error here, whereby for example year -387 was in Century -4... but at least we've moved the fencepost error to before the epoch where the mathematics is easier and we don't have to consider it every day.

Decade numbering

Existing terms like "1990s" continue to unambiguously refer to the same time periods as before.

  • "1990s" refers to 1990-01-01 to 1999-12-31 inclusive.
  • "1900s" refers to 1900-01-01 to 1909-12-31 inclusive. Or possibly 1900-01-01 to 1999-12-31, depending. Either way, it remains as ambiguous before.
  • "80s" and "Eighties" refer to 1980-01-01 to 1989-12-31 inclusive. Or possibly to 0080-01-01 to 0089-12-31. Or maybe 2080-01-01 to 2089-01-01 inclusive, who knows?
  • The period 2000-01-01 to 2009-12-31 is the "2000s"? Maybe?

Yeah, it's a mess! This is all somewhat ambiguous, and, while still accepted, not preferred. The new and preferred approach is as follows:

  • "Decade 200" refers to the time period where the year number is 200X: from 2000-00-00 to 2009-11-29 inclusive.
  • At the time of writing, we are in Decade 202.
  • "Decade 8" refers to 0080-00-00 to 0089-11-29.
  • "Decade 0" refers to 0000-00-00 to 0009-11-29 inclusive.
  • "Decade -234" refers to -2340-00-00 to -2331-11-29 inclusive.

Same moved fencepost observation as for centuries.

Discussion (30)

2020-11-30 20:10:07 by qntm:

Post your suggestions for names for month zero.

2020-11-30 21:14:14 by Ross:

By analogy with July and August, month zero should be named after you: Samuary.

2020-11-30 21:18:59 by LeaChim:

ber Has the advantage of not sharing a letter with any other month. Alternatively: <null>ber, where that's the zeroth byte in ascii. Systems that use null-terminated strings were antiquated anyhow, we don't still use those right?

2020-11-30 21:46:58 by DanielLC:

Ross, July and August weren't added by Julius and Augustus. They were part of the original calendar and were just renamed. You're confusing them with January and February, which were added, albeit before Julius and Augustus were around.

2020-11-30 22:07:07 by literallymechanical:

Not sure that "Nulluary" is a great term. You run the risk of people abbreviating "Nulluary" as "Null," given that "null" is already an English word and is easier to instinctively type/say than the officially designated three-letter "NUL" abbreviation. "NUL" can be mistaken for "null" when verbalized, as well. Remember the guy whose license plate is "NULL" and has racked up thousands upon thousands of dollars in other people's fines? Now just imagine trying to travel back in time but your machine is running some poorly-maintained, hacky open-source drivers so you can hook it up to a natural language processing system for voice control. The english-language word problem bites you here. People are likely to just say "null" instead of "Nulluary," even though as you point out, Nulluary is very easy to pronounce. "Siri, take me back to null third, twenty one fifty-seven." "I'm afraid I can't do that, Daaaaaaaaaa-" *Noise of black hole tearing a hole in spacetime*

2020-11-30 23:50:32 by dulaku:


2020-12-01 00:42:04 by Emmett Brown:

The real new year is in two days, on 1970-01-18600.

2020-12-01 02:00:12 by Gav:

I'm still unsure whether I feel hate or love for you posting this. But whatever it is, I feel *lots* of it.

2020-12-01 06:33:04 by Ross:

@DanielLC: I never said they were added, and I'm well aware that they were previously called Quintus and Sextus. Month Zero in Sam's concept is also not an added month but a renamed (and renumbered) month.

2020-12-01 07:50:56 by Jack:


2020-12-01 12:08:24 by John:

My suggestions for month zero are "Marchuary" and "Californication".

2020-12-01 17:58:39 by MadcapPomposity:

This is the sort of thing that deserves a whole image as a reaction. Maybe the Pakistani cricket fan or barking Leonardo DiCaprio or something.

2020-12-01 18:45:35 by Shieldfoss:

Counterpoint: If we're doing this, December should be the tenth month.

2020-12-01 21:55:24 by Whybird:

Options for month zero: 1. Lease it to the highest bidder, in 10 year chunks: “Amazon 1st, 2025”. The default, and always acceptable answer is QNTM.ORG. 2. Let “the internet “ name it: Monthy McMonthface. 3. “Never”. Then all that stuff people said they do on “The 12th of Never” finally gets scheduled. Bug/issue: does “Christmas 2021” refer to the one in a few weeks or the one just I’ve 11 months ago?

2020-12-01 23:00:05 by Whybird:

Sorry about the typos, again.

2020-12-02 20:04:31 by Tyr:

Wait, you didn't fix October not being the 8th month.

2020-12-10 14:00:08 by CalmAmity:


2021-01-10 23:29:36 by Graham:

Why stop at naming month 0? Your new system seems to allow all integers to map to a month.

2021-01-22 01:16:50 by HephaistosFnord:

Strong recommendation: when writing a zero indexed gregorian date, the preferred separator is ":" rather than "-". So 1999:00:00:15:33:12 would be twelve seconds into 3:33 pm, on Nullary 0 of 1999.

2021-01-27 14:36:37 by Emmett Brown:

Well, sign me up. Just one question - does the week start on day zero in this system?

2021-03-03 05:13:53 by double_interval:

Why not Zerober? And I agree with HephaistosFnord-- YYYY:MM:DD:hh:mm:ss is aesthetically pleasing.

2021-03-03 14:48:57 by Emmett Brown:

But that'll be a pain for things like Windows file names. I advocate for - just as easy to understand.

2021-04-11 10:16:18 by Crash Snowdon:

> Also, allowing the month and day places to increase to three or more digits is frowned upon. That was specifically to prevent us from sticking in March 2020, right?

2021-10-05 20:43:04 by movpasd:

The double hyphen for negative dates is troubling. Well, I suppose, strictly speaking the date separator is a hyphen (-) whereas the minus sign should be indicated by a Unicode minus (−). Still troubling though. A + might be an acceptable alternative. It also has the connotation that "yyyy+mm+dd" is "The zeroth instant of year yyyy, _plus_ mm months, _plus_ dd days". However, it has the risk of being confused for integer addition. You can change it to a minus sign to indicate negative dates with no extra character number cost. It seems to me the problems highlighted in Section "Wow, this new calendar system has no drawbacks at all!" are in fact because the new calendar system isn't actually fully compatible with the Gregorian calendar, namely, the name "February 2014" no longer refers to the same set of days. Proposed ridiculous solution: yyyy+mm+00 days are now part of _two_ different months. Months are no longer mutually disjoint sets.

2021-10-28 14:05:34 by JFarceur:

As a programmer, I am strongly against naming a month with "Null" in it, because "I fear what will happen". Also, year "minus zero" (-0) can exist, but that could be up to debate. So Century -0 is from -0000 to -0099:11:30

2021-11-06 15:29:54 by JFarceur:

Hm. There's something very wrong in what I've said just before. I guess then that : > Century -0 goes from -0099:00:00 to -0000:11:30 > Century -1 goes from -0199:00:00 to -0100:11:30 I am probably wrong again.

2021-11-09 13:52:20 by zaratustra:

in this system, is there any day that is the same in yyyy-mm-dddd format and dddd-mm-yyyy format?

2021-11-20 14:10:43 by movpasd:

I would be interested to hear your take on this:

2021-11-21 22:48:49 by ohjeezohno:

I humbly propose "Noughtober"

2023-01-04 03:37:49 by reader:

Frakestober, it’s on my Jonathan Frakes calendar which is real

New comment by :

Plain text only. Line breaks become <br/>
The square root of minus one: