# How to find the day of the week for any Date?

In this post, I will show you how you can calculate the day of the week for any date using Zeller’s formula.

The formula was proposed by a Reverend Zeller.

Here’s the formula.

`f = k + [(13*m-1)/5] + D + [D/4] + [C/4] - 2*C.`

Note [x] stands for the greatest integer smaller than or equal to x. For eg. [5.69] = 5.

Let us suppose we have to calculate the day of the week for 31st August 2019.

• k is the day of the month. For the given example k = 31.
• m is the month number when starting counting from March. March is marked as 1, April as 2, and so on. Therefore January is marked as 1 and February is 2. For the given example m = 6.
• D is the last two digits of the year. If the month is January or February, then D is subtracted by 1. For the given example D = 19 as the month is August. For 31st January 2019, D = 18.
• C is the first two digits of the year. For the given example C = 20.

Now, let us calculate the value of `f` for the above date.

`f = k + [(13*m-1)/5] + D + [D/4] + [C/4] - 2*C= 31 + [(13*6-1)/5] + 19 + [19/4] + [20/4] - 2*20= 31 + [15.4] + 19 + [4.75] +  - 40= 31 + 15 + 19 + 4 + 5 - 40= 34.`

Now that we know the value of `f` let us divide it by 7 to calculate the remainder. Note, that if the remainder is negative, we add 7 to make it positive.

`34 % 7 // finding remainder= 6`

A remainder of 0 denotes Sunday, 1 means Monday, etc. So for our example, 31st August 2019 would be Saturday.

This problem is available on LeetCode.

Here’s the code to implement the same in Java.

Written by