Not another calendar reform

A proposal for a better calendar. (If we didn't have the Gregorian calendar already and wanted to start from scratch.)

No      Name            Days
--      ----            ----
01      January         30
02      February        31
03      March           30
04      April           31
05      May             30
06      June            31
07      July            30
08      August          31
09      September       30
10      October         31
11      November        30
12      December        30 or 31

This would space out the months more equitably. Almost all two-month periods would be exactly 61 days, the exception being December in non-leap years.

I would define January 1 to be the day after the Winter Solstice (at a fixed zero meridian). So all dates would be around ten days off from the Gregorain calendar.

As a result of this rule there would be around 8 leap days every 33 years, similar to how the Iranian/Persian/Jalālī Calendar works.


Of course the final calendar we will all come to accept millennia from now will probably simply be TAI with picosecond precision, expressed as a number of seconds since some fixed instant. Then calculating intervals become trivially simple, and we will just ignore where the sun is.


Additional, optional rules to make this a perpetual calendar: January 1 is always a Saturday. Then on 365-day years, you would get two Saturdays in a row:

12-29 12-30 | 01-01 01-02 01-03
 Fri   Sat  |  Sat   Sun   Mon

Or a double weekend on leap years:

12-29 12-30 12-31 | 01-01 01-02 01-03
 Fri   Sat   Sun  |  Sat   Sun   Mon

Note that one could make the existing Gregorian Calendar into a perpetual calendar by defining March 1 as always a Saturday.

02-27 02-28 | 03-01 03-02 03-03
 Fri   Sat  |  Sat   Sun   Mon

02-27 02-28 02-29 | 03-01 03-02 03-03
 Fri   Sat   Sun  |  Sat   Sun   Mon

UPDATE 2008-10-25: Here's very simple python code to give the month, day, and week, given the day of year.

# returns (month, day-of-month, weekday)
# given day-of-year
def dayandmonth(yday):
    assert (yday > 0) and (yday < 367)
    da = ((yday - 1) % 61) + 1
    mo = (((yday - 1) // 61 ) * 2) + 1
    if (da > 30):
        da = da - 30
        mo = mo + 1
    wd = (yday - 1) % 7 +1
    return (mo, da, wd)

And a leap year function:

# offset is determined by solar
# observations at the reference
# longitude
def isleapyear2(y, offset=6):
    n = (y + offset) % 33
    return n and not (n % 4)

Every 10,000 years, the offset may need to be changed. After 100,000 years, a new algorithm will likely be necessary


UPDATE 2020-04-22:

Here's another common option for a perpetual calendar. Insert one or two non-weekdays into the year. With this option, each quarter is always exactly 13 weeks, and starts on a Sunday. Many businesses use a 4–4–5 calendar because this property is so convienent.

No   Name         Days     Starts With  Quarter
--   ----         ----     -----------  -------
01   January      30       Sunday       QⅠ
02   February     31       Tuesday
03   March        30       Friday

04   April        31       Sunday       QⅡ
05   May          30       Wednesday
06   June         31       Friday

     [June 31 is not a weekday]

07   July         30       Sunday       QⅢ
08   August       31       Tuesday
09   September    30       Friday

10   October      31       Sunday       QⅣ
11   November     30       Wednesday
12   December     30 or 31 Friday

     [December 31 is not a weekday]