How to Figure Out What Day of the Week Any Date Falls On

Most people just Google it. But if you actually need to know this for work — scheduling, payroll, calendar systems — it helps to understand the mechanism so you aren't dependent on a website being up. As of right now, in 2025, December 3rd falls on a Wednesday. Next year it shifts to Thursday. The year after that, because 2026 isn't a leap year, it goes to Friday. In 2027 it stays at Friday since the gap from December to December crosses a non-leap year boundary. It lands on Saturday in 2028, but here's where people get tripped up — 2028 is a leap year, and that February 29th changes how the annual shift works going forward. The basic rule: each regular year pushes the day of the week forward by one. Each leap year pushes it forward by two. That's it. The whole system is built on that pattern repeating every 28 years in the Gregorian calendar, with the exception of century years not divisible by 400. So 1900 wasn't a leap year but 2000 was.

I used to calculate this by hand before I trusted my memory. There's a method called Zeller's Congruence that gives you the weekday for any date. It looks like this: h = (q + floor(13(m+1)/5) + K + floor(K/4) + floor(J/4) - 2J) mod 7 Where h is the day of the week (0 = Saturday), q is the day of the month, m is the month (3 = March through 14 = February), K is the year of the century, and J is the zero-based century. For December, m = 12 and you just plug in the numbers. It works every time. I used it during a deployment where our internal scheduling tool had a bug that returned incorrect weekdays for dates past October in non-leap years. I wrote a quick Python script using Zeller's formula to validate everything before we shipped. Fixed about 200 misdated records in under an hour.

There's a simpler shortcut if you don't want to do modular arithmetic. memorize the doomsday rule. John Conway popularized it. The idea is that certain easy-to-remember dates — the "doomsdays" — always fall on the same weekday within a given year. For example, 4/4, 6/6, 8/8, 10/10, 12/12 all land on the same weekday. December 12th is a doomsday. So December 3rd is exactly one week minus one day from that, meaning it's the weekday right before the doomsday. If you know the doomsday for 2025 is Thursday, then December 12th is Thursday and December 3rd is Wednesday. One step. The catch with both methods is century-level edge cases. The doomsday anchor changes per century: 1900 was Sunday, 2000 was Tuesday, 2100 will be Friday. If you're working with dates outside your immediate familiarity, double-check the anchor. I once scheduled a recurring system job for December 3rd across multiple years and got 2100 wrong because I applied the 2000 anchor instead of recalculating. Ran it on Thursday instead of Wednesday. The job fired one day early and broke a downstream reconciliation process. If you need to do this in code, don't roll your own. Use the built-in datetime library in whatever language you're working with. Python's datetime module handles all the leap year rules correctly, including the century exceptions. A one-liner like datetime(2025, 12, 3).strftime("%A") gives you Wednesday without any risk of off-by-one errors.

Get the Full Details

3rd day of December. The hand circles the date on the calendar 3 ...
3rd day of December. The hand circles the date on the calendar 3 ...

The reason people ask this question tends to fall into two buckets: they have a specific date they need to know for planning, or they're building something that depends on weekday calculations. For the first, just look it up. For the second, understanding the underlying mechanic saves you from headaches when the calendar does something unexpected, like when a fiscal year ends on a date that doesn't align with the standard week cycle. December 3rd is a Wednesday in 2025. It'll be Thursday in 2026, Friday in 2027, Saturday in 2028. The pattern continues from there.