For those who would like to be able to figure day of year from date in the heads, here are a couple of reasonable ways.
1. Given month 1 <= m <= 12, day 0 of that month (i.e., the day before the first of the month) in a non-leap year is day 30(m-1) + F[m] of the year, where F[m] is from this array (1-based indexing!):
0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4
Add the day, and add 1 if it is a leap year and m >= 3.
E.g., September 12. m = 9, giving 240 + F[9] = 243 for Sep 0. Add 12 for the day, and 1 for the leap year, giving 256.
The F table has enough patterns within it to make it fairly easy to memorize. If you prefer memorizing formulas to memorizing tables, you can do months m >= 3 with F[m] = 6(m-4)//10, where // is the Python3 integer division operator. Then you just need to memorize the Jan is 0, Feb is 1, and the rest are 6(m-4)//10.
2. If you have the month terms from the Doomsday algorithm for doing day of week calculations already memorized, you can get F]m] from that instead of memorizing the F table.
F[m] == -(2m + 2 - M[m]) mod 7, where M[m] is the Doomsday month term (additive form): 4, 0, 0, 3, 5, 1, 3, 6, 2, 4, 0, 2.
You then just have to remember that -1 <= F <= 4, so adjust -(2m + 2 -M[m]) by an appropriate multiple of 7 to get into that range.
BTW, you can run use that formula relating F[] and M[] the other way. If you have F[], them M[m] = F[m] + 2 m + 2 mod 7. Some people might find it easier to memorize F and compute M from that when doing day of week with Doomsday rather than memorize M.