Originally by John Horton Conway.
Purpose
This method allows you to tell what weekday a given day and month is in any year you choose. It is even faster for the current year, provided you remember an intermediate result for the current year.
Method
In any given year there is a set of 52 dates which are the same weekday in that year.1 These dates are called doomsdays. You don't need to remember all 52, just 11 will do, and you can quickly calculate the remaining 41 from those.
Last days of January and February: 31.1., 28.2., except in leap years the first and the last day of February: 1.2., 29.2.
Even months: 4.4., 6.6., 8.8., 10.10., 12.12.
Odd months: 9.5., 11.7., 5.9., 7.11.
In 2021 doomsday was Sunday. In 2022 doomsday is Monday. In general, doomsday steps forward one weekday a year, except on leap years, when it steps forward two weekdays.2
1Note that a different set of dates could be selected, all an exact multiple of seven days from each other. But the resulting dates wouldn't fit such an easy to remember pattern.
2In my easter calculation method, the weekday of doomsday is called N, zero being Sunday, one Monday, and so forth:
Remember the current value of N. For each advance of a year, increase N by one, or by two if the new year is a leap year. If N goes over 6, subtract 7, to keep it in the acceptable range 0 to 6.
What if I lose my place or want to calculate a year a long way from now?
Divide the year by 400 and the remainder is Z. Divide Z + Z/4 - Z/100 + 2 by 7 and the remainder is N.
Connection to European (ISO 8601) week numbering
In regular years, the day following the doomsdays listed above is always in the week number given in the table below. In leap years, the doomsday itself is in the week number given.
31.1. | 5 = 5 + 0*9 |
28.2. | 9 |
4.4. | 14 = 5 + 1*9 |
9.5. | 19 |
6.6. | 23 = 5 + 2*9 |
11.7. | 28 |
8.8. | 32 = 5 + 3*9 |
5.9. | 36 |
10.10. | 41 = 5 + 4*9 |
7.11. | 45 |
12.12. | 50 = 5 + 5*9 |