quick, what day of the week is Halloween this year?

…

Thursday.

since i’m super bored, let me talk about a way to calculate what day of the week any given date is. thanks to the annoying Gregorian calendar, we pretty much never know this for more than a few days at any time, which no doubt wastes $900 quadrillion every year in world productivity.

so here’s my method!

given a date, first i figure out what day number in the year it is. consider Feb 1st: that’s day 32, because there’s 31 days before February, and Feb 1st is the next day after that. so for each month, i need to know the number of days in the year *before *that month begins. for March, it’s 31 + 28 = 59, and so on:

Jan: 0

Feb: 31

Mar: 59

Apr: 90

May: 120

Jun: 151

Jul: 181

Aug: 212

Sep: 243

Oct: 273

Nov: 304

Dec: 334

so when i see “Oct 31st”, i immediately convert “Oct” into 273, and then add 31 to it to get 304. that means Halloween is the 304th day of the year (305th in leap years).

the month shortcuts are pretty easy to memorize because it’s close to counting by 30s.

some methods, instead of having you memorize month shortcuts, have you memorize this instead:

Jan: 0

Feb: 3

Mar: 3

Apr: 6

May: 1

Jun: 4

Jul: 6

Aug: 2

Sep: 5

Oct: 0

Nov: 3

Dec: 5

these are *month offsets*. they’ve just taken out all the whole weeks before each month, so that after you add the day of the month, you won’t have to divide a giant 3-digit number by 7—at most, it’ll be a number in the 30s. but i like using day numbers in the year, because since i’ve already done this much work, sometimes it’s useful to figure out the number of days between two dates. you decide which method you prefer.

after figuring out the day number, i need to know how many days *more* than a whole number of weeks that is. consider day 45 (Valentine’s Day): that’s 3 days more than six whole weeks. so you’re subtracting the biggest multiple of 7 that’s smaller than the day number, and keeping what’s left over. for later months, it can help to have the multiples of 7 memorized all the way up to 7 × 52 = 364. (if you’re still reading this, you can probably do long division in your head easily, but shortcuts still help.)

the number left over corresponds to a day of the week. 1 = Monday, so 3 = Wednesday.

last, i need to know what day of the week the given year started on. the best case is if Jan 1st was a Monday, because if so, the answer from the previous step would be the final answer. but 2019 started on a Tuesday, so each day actually occurs 1 day of the week later than calculated in the previous step. so for any date in 2019, i need to take my previous answer and add 1, getting 4 = Thursday for Valentine’s Day.

i call that a *year offset* of 1. the offset is the number of days *between* Jan 1st and the Monday before it. if Jan 1st itself was a Monday, the year offset would be 0; if it was a Sunday, the offset would be 6.

each year has a different offset, which you just have to memorize. given the offset of any one year, you can calculate the offset of any other year, but even i don’t bother with that because it’s a pain in the ass. (it’s because 365 days is 52 × 7 + 1, so each year’s offset is 1 higher than the previous year’s, or 2 higher if the previous year was a leap year—so you need to have the leap year rules memorized too.)

in conclusion, it’s two parts: first, figure out the day number, and second, figure out what day of the week that is, which includes the shift for the date itself, and the shift for the entire year.

and that’s it! now you can use this trick to impress absolutely no one!