Not another calendar reform

By Hal Canary, 2007-10-26 16:45:39 (link)
#new-standards

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 isleapyear(y):
   offset = 2
   y = (y + offset) % 33
   if (y != 32) and ((y % 4) == 0):
        return True
   else:
        return False

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


(back)