Both methods allow you to calculate the day of the week for any date using mental math. The core principle is the same: break a date into components (Century, Year, Month, Day), look up or calculate a code for each component, add all codes together, and take Mod 7 to get the day of the week.
The key difference is how the YEAR component is handled: the 10s Method uses Base-10 (decades) while the 20s Method uses Base-20. Both produce the Year Code by adding an Anchor Code and a Remainder Code. Once the Year Code is determined, the rest is a cakewalk — calculating the Year Code mentally is the hardest part.
Day of Week = (Century Code + Year Code + Month Code + Day of Month) MOD 7
The result maps to the Day Code Table below.
The 10s Method divides the 2-digit year into two parts: an Anchor Year (nearest lower multiple of 10) and a Unit Year (0–9). This method has a special Latif Patch Rule that adjusts codes for odd decades. Adding the Anchor Code (Table 1.1) and the Unit Code (Table 1.2) gives the Year Code, which is then combined with the Century, Month, and Day codes from the Shared Tables.
| # | Step |
|---|---|
| 1 | Find the Century Code from the Century Code Table |
| 2 | Find the Anchor Year (nearest lower multiple of 10) and get its code from the 10s Anchor Year Code Table |
| 3 | Find the Unit Year (last digit 0–9) and get its code — apply the Latif Patch Rule if in an odd decade |
| 4 | Get the Month Code (adjust for leap year in Jan/Feb by subtracting 1) |
| 5 | Add the Day of the month |
| 6 | Sum all codes and take MOD 7 to get the day |
| Anchor Year (×10) | Code | Formula | Pattern |
|---|---|---|---|
| 0 | 0 | 0 | Start |
| 10 | 5 | Prev − 2 = 0−2 = −2 mod 7 = 5 | −2 |
| 20 | 4 | Prev − 1 = 5−1 = 4 | −1 |
| 30 | 2 | Prev − 2 = 4−2 = 2 | −2 |
| 40 | 1 | Prev − 1 = 2−1 = 1 | −1 |
| 50 | 6 | Prev − 2 = 1−2 = −1 mod 7 = 6 | −2 |
| 60 | 5 | Prev − 1 = 6−1 = 5 | −1 |
| 70 | 3 | Prev − 2 = 5−2 = 3 | −2 |
| 80 | 2 | Prev − 1 = 3−1 = 2 | −1 |
| 90 | 0 | Prev − 2 = 2−2 = 0 | −2 |
💡 Pattern: subtract 2 and 1 alternately from the previous code. Apply MOD 7 when the result is negative.
| Unit Year | Even Decades (0,20,40,60,80) | Odd Decades (10,30,50,70,90) | Patch? | Notes |
|---|---|---|---|---|
| 0 | 0 | 0 | No | |
| 1 | 1 | 1 | No | |
| 2 | 2 | 3 | Yes (+1) | Latif Patch: 2+1=3 |
| 3 | 3 | 4 | Yes (+1) | Latif Patch: 3+1=4 |
| 4 | 5 | 5 | No | Leap year adds +1 |
| 5 | 6 | 6 | No | |
| 6 | 0 | 1 | Yes (+1) | Latif Patch: 0+1=1 |
| 7 | 1 | 2 | Yes (+1) | Latif Patch: 1+1=2 |
| 8 | 3 | 3 | No | Leap year adds +1 |
| 9 | 4 | 4 | No |
💡 Unit Year Code formula: (Unit Year + INT(Unit Year / 4)) MOD 7
The 20s Method divides the 2-digit year into an Anchor Year (nearest lower multiple of 20) and a Remainder (0–19). Adding the Anchor Code and the Remainder Code gives the Year Code, which combined with the Century, Month, and Day codes gives the day of the week.
This method is simpler — no patch rule needed! The remainder formula handles leap years automatically.
| # | Step |
|---|---|
| 1 | Find the Century Code from the Century Code Table |
| 2 | Find the Anchor Year (nearest lower multiple of 20: 0, 20, 40, 60, 80) and get its code |
| 3 | Find the Remainder (Year − Anchor Year, range 0–19) and calculate its code using the formula |
| 4 | Get the Month Code (adjust for leap year in Jan/Feb by subtracting 1) |
| 5 | Add the Day of the month |
| 6 | Sum all codes and take MOD 7 to get the day |
| Anchor Year (×20) | Code | Formula: (Previous Code − 3) MOD 7 |
|---|---|---|
| 0 | 0 | Start |
| 20 | 4 | (0 − 3) mod 7 = −3 mod 7 = 4 |
| 40 | 1 | (4 − 3) mod 7 = 1 |
| 60 | 5 | (1 − 3) mod 7 = −2 mod 7 = 5 |
| 80 | 2 | (5 − 3) mod 7 = 2 |
💡 Pattern: simply subtract 3 from the previous code and apply MOD 7. Only 5 codes to memorize!
| Remainder | Code | Formula: (R + INT(R/4)) MOD 7 |
|---|---|---|
| 0 | 0 | (0 + 0) mod 7 = 0 |
| 1 | 1 | (1 + 0) mod 7 = 1 |
| 2 | 2 | (2 + 0) mod 7 = 2 |
| 3 | 3 | (3 + 0) mod 7 = 3 |
| 4 | 5 | (4 + 1) mod 7 = 5 |
| 5 | 6 | (5 + 1) mod 7 = 6 |
| 6 | 0 | (6 + 1) mod 7 = 0 |
| 7 | 1 | (7 + 1) mod 7 = 1 |
| 8 | 3 | (8 + 2) mod 7 = 3 |
| 9 | 4 | (9 + 2) mod 7 = 4 |
| 10 | 5 | (10 + 2) mod 7 = 5 |
| 11 | 6 | (11 + 2) mod 7 = 6 |
| 12 | 1 | (12 + 3) mod 7 = 1 |
| 13 | 2 | (13 + 3) mod 7 = 2 |
| 14 | 3 | (14 + 3) mod 7 = 3 |
| 15 | 4 | (15 + 3) mod 7 = 4 |
| 16 | 6 | (16 + 4) mod 7 = 6 |
| 17 | 0 | (17 + 4) mod 7 = 0 |
| 18 | 1 | (18 + 4) mod 7 = 1 |
| 19 | 2 | (19 + 4) mod 7 = 2 |
💡 The INT(R/4) automatically counts leap years, adding +1 for every 4 years.
| Step | Description | Lookup / Calculation | Code |
|---|---|---|---|
| 1 | Century Code (19xx) | From Century Table: 19 → 1 | 1 |
| 2 | Anchor Year (90) | From 10s Anchor Table: 90 → 0 | 0 |
| 3 | Unit Year (5) | From Unit Year Table (odd decade 90): 5 → 6 | 6 |
| (No Latif Patch needed — 5 is not 2, 3, 6, 7) | |||
| 4 | Month Code (January) | From Month Table: Jan → 6 (not a leap year) | 6 |
| 5 | Day of Month (mod 7) | 15 → 1 | 1 |
| 6 | Sum All Codes | 1 + 0 + 6 + 6 + 1 = 14 | 14 |
| 7 | Take MOD 7 | 14 MOD 7 = 0 | 0 |
| Result | Day Code 0 = Sunday — ✓ January 15, 1995 was a SUNDAY | ||
| Step | Description | Lookup / Calculation | Code |
|---|---|---|---|
| 1 | Century Code (19xx) | From Century Table: 19 → 1 | 1 |
| 2 | Anchor Year (80) | From 20s Anchor Table: 80 → 2 | 2 |
| 3 | Remainder (95−80=15) | From Remainder Table: 15 → 4 | 4 |
| (Formula: (15 + INT(15/4)) mod 7 = (15+3) mod 7 = 4) | |||
| 4 | Month Code (January) | From Month Table: Jan → 6 (not a leap year) | 6 |
| 5 | Day of Month (mod 7) | 15 → 1 | 1 |
| 6 | Sum All Codes | 1 + 2 + 4 + 6 + 1 = 14 | 14 |
| 7 | Take MOD 7 | 14 MOD 7 = 0 | 0 |
| Result | Day Code 0 = Sunday — ✓ January 15, 1995 was a SUNDAY | ||
✅ Both methods give the same answer! 💡 Keep doing Mod 7 whenever the day of the month or any sum grows larger than 7.
(Century Code + Year Code + Month Code + Day) MOD 7 = Day of Week(Year + INT(Year/4)) MOD 7 automatically adds +1 for leap years by counting past leap days.Year Code = (Year + INT(Year / 4)) MOD 7. The INT(Year/4) part counts how many leap years have passed. When a leap year occurs, this part increases by 1, automatically adding +1 to the entire year’s calculations.
Since March–December NEED this +1 boost, they’re already correct. The leap day (Feb 29) hasn’t happened yet for dates in those months — hence days before 29 Feb, in Jan and Feb, need the −1 adjustment.
Example, the 2023 → 2024 transition: 2023: INT(23/4) = 5; 2024: INT(24/4) = 6 ← automatically +1!