# Day of the week calculator

> Day of the week for any date, past or future: the weekday in the Gregorian calendar, worked through step by step with Zeller's congruence.

Interactive version: https://www.calcopenly.com/datetime/day-of-the-week-calculator
Subject: Date and time calculators

Zeller's congruence, published in 1887, turns a date into a weekday with whole-number arithmetic. January and February count as months 13 and 14 of the previous year; the year is split into its century J and year of the century K; and q + ⌊13(m + 1)/5⌋ + K + ⌊K/4⌋ + ⌊J/4⌋ + 5J is divided by 7. The remainder h names the weekday, from 0 for Saturday to 6 for Friday. The result is cross-checked against a count of days from 1 January 1970, a Thursday.

People use it to find the weekday they were born on, the day a historical event fell on, or where a future deadline lands. Apollo 11 landed on the Moon on 20 July 1969, and the congruence gives h = 1: a Sunday.

Dates before 15 October 1582 follow the Gregorian rules extended backwards. Records from those years usually use the Julian calendar, which gives a different weekday for the same written date.

## Inputs

- **Date**: Any year; dates before 15 October 1582 use the Gregorian rules extended backwards.

## Results

- Day of the week — main result
- ISO weekday number (Monday = 1)
- Zeller's h (Saturday = 0)
- Days from today

## Formula

$$
h = \left(q + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor + 5J\right) \bmod 7
$$

## Worked examples

### Apollo 11 Moon landing

- Date: 1969-07-20
- **Day of the week: Sunday**
- **ISO weekday number (Monday = 1): 7**
- **Zeller's h (Saturday = 0): 1**
- Checked against: NASA mission records (Sunday 20 July 1969); Python date(1969,7,20).weekday() = 6 (Sunday)

### Leap day 2000

- Date: 2000-02-29
- **Day of the week: Tuesday**
- **Zeller's h (Saturday = 0): 3**
- Checked against: Python 3.8: date(2000,2,29).weekday() = 1 (Tuesday); Zeller evaluated by hand with m = 14, Y = 1999

### First day of the Gregorian calendar

- Date: 1582-10-15
- **Day of the week: Friday**
- **ISO weekday number (Monday = 1): 5**
- Checked against: Inter gravissimas: Thursday 4 October 1582 (Julian) was followed by Friday 15 October 1582; Python date(1582,10,15).weekday() = 4

### Year 1, proleptic

- Date: 0001-01-01
- **Day of the week: Monday**
- **Zeller's h (Saturday = 0): 2**
- Checked against: Python 3.8: date(1,1,1).weekday() = 0 (Monday, proleptic Gregorian)

### 15 January 2026

- Date: 2026-01-15
- **Day of the week: Thursday**
- **ISO weekday number (Monday = 1): 4**
- **Zeller's h (Saturday = 0): 5**
- Checked against: Python 3.8: date(2026,1,15).weekday() = 3 (Thursday); Zeller by hand with m = 13, Y = 2025: h = 5

## Questions

### How can I work out the day of the week in my head?

Use John Conway's doomsday rule. In any year, 4 April, 6 June, 8 August, 10 October, 12 December, the last day of February, 9 May, 5 September, 11 July and 7 November share one weekday, the year's doomsday. In 2026 it is Saturday, so 12 December 2026 is a Saturday and 25 December, 13 days later, is a Friday.

### Does a date fall on the same weekday every year?

No. A common year is 52 weeks and 1 day, so a date moves forward one weekday a year, or two when a 29 February comes between. A whole year's calendar usually repeats after 6, 11 or 28 years; 2026's is reused in 2037. The Gregorian calendar repeats exactly every 400 years, which are 146,097 days or 20,871 weeks.

### Is Monday or Sunday the first day of the week?

It depends on the convention. ISO 8601 makes Monday day 1 and Sunday day 7, which is how the ISO weekday number here is counted. US calendars start on Sunday, and Excel's WEEKDAY function returns 1 for Sunday unless told otherwise. Zeller's own numbering starts at Saturday = 0, which is why the calculator shows it separately.

### What happened to the weekdays when the calendar changed in 1582?

Nothing: the dates jumped, the weekdays did not. In Catholic countries Thursday 4 October 1582 in the Julian calendar was followed by Friday 15 October 1582 in the Gregorian calendar. Britain and its colonies changed in 1752, when Wednesday 2 September was followed by Thursday 14 September. For earlier dates, check which calendar a source uses before trusting a weekday.

### How accurate is the day of the week calculator?

Accuracy depends on your inputs and the method's assumptions. Decimal arithmetic uses 50 significant digits, but estimates, numerical methods and source data can be less precise; the displayed rounding does not remove those limits. It is checked against 5 worked examples whose answers come from independent sources; for example, “Apollo 11 Moon landing” is checked against NASA mission records (Sunday 20 July 1969); Python date(1969,7,20).weekday() = 6 (Sunday).

### Where does the method come from?

Chr. Zeller, “Kalender-Formeln”, Acta Mathematica 9 (1887), 131–136; Howard Hinnant — weekday_from_days.

## Sources

- Chr. Zeller, “Kalender-Formeln”, Acta Mathematica 9 (1887), 131–136
- [Howard Hinnant — weekday_from_days](https://howardhinnant.github.io/date_algorithms.html#weekday_from_days)
