Perpetual Calendar

To compute the (Gregorian calendar's) weekday for any date, you have a choice between computing more or memorizing some numbers. In the formulas below, the following operators are used:

Method 1 (formulas only)

The following formula yields 1 for Monday, 2 for Tuesday etc.

( DayOfMonth + Y + Y/4 – Y/100 + Y/400 + 31×M/12 ) % 7

For dates in January or February:

For other dates:

The side formulas for Y and M basically result in treating January and February as belonging to the previous year. For example, February 2014 yields Y=2013 and M=12, whereas March 2014 yields Y=2014 and M=1.

For similar formulas, have a look at the Wikipedia article on Zeller's congruence.

Method 2 (formula and numbers)

This formula yields 0 for Monday, 1 for Tuesday etc.

( DayOfMonth + MonthCode + Year + Year/4 – 2×(Century%4) – isLeapJanFeb ) % 7

MonthCode:

JanFebMar AprMayJun JulAugSep OctNovDec

 5  1  1   4  6  2   4  0  3   5  1  3

In the formula,

In order to find the weekday, the resulting number only needs to be looked up in the table already used for the months.

Examples

Example Day: 8 May 1945

Method 1

(  DayOfMonth +  Y   +  Y/4   –  Y/100   +   Y/400  + 31×M/12 ) % 7

(      8      + 1944 + 1944/4 – 1944/100 + 1944/400 + 31×3/12 ) % 7

(      8      + 1944 +  486   –   19     +     3    +    9    ) % 7  =  2431 % 7  =  2

Method 2

( DayOfMonth + MonthCode + Year + Year/4 – 2×(Century%4) – isLeapJanFeb ) % 7

(     8      +     6     +  45  +  45/4  –    2×(19%4)   –       0      ) % 7

(     8      +     6     +  45  +   11   –      2×3      –       0      ) % 7  =  64 % 7  =  1

So the official end of World War II in Europe was a Tuesday. You might check for yourself that it began (1 Sep 1939) on a Friday. Unfortunately with not just one, but 297 weekends in between...

Julian Calendar

In this calendar, not only are leap years simply defined as all those that are a multiple of 4, but the formula (Method 2) also differs slightly:

( DayOfMonth + MonthCode + Year + Year/4 + 5 – Century – isLeapJanFeb ) % 7

Example: 24 Aug 0079, the day Pompeii was buried by Mt. Vesuvius' eruption, was a Tuesday [(24+0+79+19+5–0–0)%7=1]. In the Gregorian calendar, it would have been 22 Aug 0079 (how to compute this is a different story), which unsurprisingly was a Tuesday as well [(22+0+79+19–0–0)%7=1]: When switching from Julian to Gregorian because the former was getting out of sync with the seasons, there was no need to additionally interrupt the cycle of weekdays.