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]