— This upcoming video may not be available to view yet.
This was a question that came up recently, and the answer is interesting enough I decided to step through the process of working it out.
A good year
There are seven days in the week. If the year had a number of days in it that was divisible by seven (say 364), then the answer would be easy: every year and every date would fall on the same day every year.
This would have some nice properties. Some of the more complicated holidays that need to happen on certain days would get simpler, and the poem about what kind of person you are based on the day of your birth would be more poignant since your birthday would be the same each year.
A normal year
But alas, the number of days in the year is not divisible by seven, and we have to suffer with a different calendar each year. But there is good news, there are only seven possible calendars - one starting on each day of the week.
With 365 days in the year, we would have the following possible calendars:
Monday 1st January, Tuesday 2nd January … Monday 31st December
Tuesday 1st January, Wednesday 2nd January … Tuesday 31st December
Wednesday 1st January, Thursday 2nd January … Wednesday 31st December
Thursday 1st January, Friday 2nd January … Thursday 31st December
Friday 1st January, Saturday 2nd January … Friday 31st December
Saturday 1st January, Sunday 2nd January … Saturday 31st December
Sunday 1st January, Monday 2nd January … Sunday 31st December
After we have cycled through those calendars, the pattern starts again. Hooray.
Leap years
Of course it is not that simple. Every four years we have a year with an extra day in it, throwing everything off. And to fix it we will need Maths.
We have a cycle of seven starting days, overlaid with a four year cycle of leap years. To determine when the large cycle repeats we need to calculate the least common multiple of four and seven. Since four and seven are coprime (they have no common divisors), their least common multiple is their product.
4 × 7 = 28
So you will be able to reuse your calendar every 28 years.
Knowing when the whole cycle repeats give you an answer to when you can reuse your calendar, but not necessarily the best answer. Applying a bit of logical reasoning, you can work out that there are only 14 possible calendars: one for each day of the week in a leap year, and one for each day of the week in a common year.
A non-leap year is also called a common year.
Sadly, at this point clever maths is probably less illustrative than a brute force approach. Since we know the cycle is only 28 items long, the force is not that brutish…
I shall name the possible calendars with a number indicating the day of the week they start on (1 for Monday), and a letter L or C, indicating a leap year or common year respectively.
Lets start with a common year:
C1
As you may have noticed from earlier, the year after a common year begins with the next day.
C1 C2
We can continue the pattern up to the first leap year, since leapyness does not affect how a year starts.
C1 C2 C3 L4
But what next? A leap year has an extra day, so instead of going up by one, we go up by two.
C1 C2 C3 L4 C6
We are now ready to complete the pattern (remembering after 7, we go back to 1)
The cycle is 28 years long, and there are 14 possible calendars so you might naïvely think each one appears twice, but that isn’t the case. The leap years appear once each, and the common years appears three times each.
This means for leap years, our guess at waiting 28 years to reuse a calendar is correct. For common years, you can reuse your calendar, on average every 9⅓ years, but in a seemingly irregular pattern.
Making it useful
For any given year, you only need to know when you are relative to a leap year to work out when a calendar can be reused:
Year
Years until next reuse
Leap year
28
Year after leap year
6
Two years after leap year
11
Year before leap year
11
So if it is two years after a leap year, for example 2018, you can reuse your calendar 11 years later, in 2029.
If you want to calculate the next reuse after that, then the method is straightforward, but hard to explain clearly. First, I’ll provide a variation of the above table with just common years.
Year
Years until next reuse
Year after leap year
6
Two years after leap year
11
Year before leap year
11
Year after leap year
6
Two years after leap year
11
Year before leap year
11
Year after leap year
6
Two years after leap year
11
Year before leap year
11
Year after leap year
6
Two years after leap year
11
Year before leap year
11
To work out the reuse after the next reuse, step backwards through the table (wrapping round when you get to the beginning).
So, if it is 2019 (a year before a leap year), the next reuse is 11 years later in 2030. This is two years after a leap year, so the next reuse is found by reading the row above - 11 years later again in 2041. Now we are a year after a leap - repeating the process and reading the row above we find the next reuse is 6 years later in 2047.
This can be summarised in the following decision tree:
Taking it further
What we have so far will work for the vast majority of people, at least for working out calendars within your own lifetime. But if you want to work out years close to 2100, it will fail.
The reason is that the idea that a leap year is every four years is not the whole story. If the year is also divisible by 100, then it is not a leap year. So 2100 is not a leap year. And nether was 1900.
But… what about 2000? If you check a 2000 calendar you’ll find February 29th. Turns out there is another rule to leap years - if the year is also divisible by 400, it is a leap year. So 2000 was, and 2400 will be.
The reason these are added are to make up for the fact that the length of the year is not nicely divisible by the length of the day. There are currently no further rules but the day will drift again at some point.
There is a proposal to make every year divisible by 4000 into a common year but based on historical precedent we will probably completely change the calendar before that happens.
At first glance that table looks unhelpful - the numbers in the last column are all over the place. But, with a bit of careful thinking it’s only a small extension to the previous method.
The final algorithm
Any more issues
I have assumed two calendars are the same if they start on the same day and have the same number of days. But there are other differences, like when certain holidays occur.
Some of the holidays will change in the same way and so won’t matter. For example in the UK, Christmas Day is a bank holiday. If it happens to fall on a weekend, then the next weekday is a bank holiday in lieu.
Many holidays however do change, and it is mostly to do with the moon. For instance the definition of when Easter occurs in western Christianity is:
the first Sunday after the first full moon that falls on or after the vernal equinox
To make things a bit weirder, it’s not really the vernal equinox, but March 21 (the vernal equinox is often on March 21, but in reality happens some time between March 19 and March 22 and can vary with timezone). It’s also not the full moon in the astronomical sense, but the Paschal full moon, which is an approximation of the astronomical full moon based on the 19-year Metonic cycle. Full details here.