# Zeller’s Congruence | Find the Day for a Date

• Difficulty Level : Medium
• Last Updated : 02 Aug, 2022

Zeller’s congruence is an algorithm devised by Christian Zeller to calculate the day of the week for any Julian or Gregorian calendar date. It can be considered to be based on the conversion between Julian’s day and the calendar date.
It is an algorithm to find the day of the week for any date.
For the Gregorian calendar it is:

For the Julian calendar it is:

where,

1. h is the day of the week (0 = Saturday, 1 = Sunday, 2 = Monday, …, 6 = Friday)
2. q is the day of the month
3. m is the month (3 = March, 4 = April, 5 = May, …, 14 = February)
4. K is the year of the century (year % 100).
5. J is the zero-based century (actually âŒŠ year/100 âŒ‹) For example, the zero-based centuries for 1995 and 2000 are 19 and 20 respectively (to not be confused with the common ordinal century enumeration which indicates 20th for both cases).
NOTE: In this algorithm January and February are
counted as months 13 and 14 of the previous
year.E.g. if it is 2 February 2010, the
algorithm counts the date as the second day
of the fourteenth month of 2009 (02/14/2009
in DD/MM/YYYY format)

For an ISO week date Day-of-Week d (1 = Monday to 7 = Sunday), use

 d = ((h+5)%7) + 1

## C++

 // C++ program to Find the Day // for a Date #include  #include  #include  using namespace std;   int Zellercongruence(int day, int month, int year) {     if (month == 1) {         month = 13;         year--;     }     if (month == 2) {         month = 14;         year--;     }     int q = day;     int m = month;     int k = year % 100;     int j = year / 100;     int h         = q + 13 * (m + 1) / 5 + k + k / 4 +                                j / 4 + 5 * j;     h = h % 7;     switch (h) {     case 0:         cout << "Saturday \n";         break;     case 1:         cout << "Sunday \n";         break;     case 2:         cout << "Monday \n";         break;     case 3:         cout << "Tuesday \n";         break;     case 4:         cout << "Wednesday \n";         break;     case 5:         cout << "Thursday \n";         break;     case 6:         cout << "Friday \n";         break;     }     return 0; }   // Driver code int main() {     Zellercongruence(22, 10, 2017); // date (dd/mm/yyyy)     return 0; }

## Java

 // Java program to  Find the Day // for a Date import java.util.*;   class GFG {     // Print Day for a Date     static void Zellercongruence(int day, int month,                                  int year)     {         if (month == 1)         {             month = 13;             year--;         }         if (month == 2)         {             month = 14;             year--;         }         int q = day;         int m = month;         int k = year % 100;         int j = year / 100;         int h = q + 13*(m + 1) / 5 + k + k / 4 + j / 4 + 5 * j;         h = h % 7;         switch (h)         {             case 0 : System.out.println("Saturday"); break;             case 1 : System.out.println("Sunday"); break;              case 2 : System.out.println("Monday"); break;             case 3 : System.out.println("Tuesday"); break;             case 4 : System.out.println("Wednesday"); break;             case 5 : System.out.println("Thursday"); break;             case 6 : System.out.println("Friday"); break;         }     }           // Driver code     public static void main(String[] args)     {         Zellercongruence(22, 10, 2017); //date (dd/mm/yyyy)     } }   /* This code is contributed by Mr. Somesh Awasthi */

## Python3

 # Python3 program to  Find the Day # for a Date   def switch(h) :     return {         0 : "Saturday",         1 : "Sunday",         2 : "Monday",         3 : "Tuesday",         4 : "Wednesday",         5 : "Thursday",         6 : "Friday",     }[h]   def Zellercongruence(day, month, year) :     if (month == 1) :         month = 13         year = year - 1       if (month == 2) :         month = 14         year = year - 1     q = day     m = month     k = year % 100;     j = year // 100;     h = q + 13 * (m + 1) // 5 + k + k // 4 + j // 4 + 5 * j     h = h % 7     print(switch (h))                   # Driver code Zellercongruence(22, 10, 2017) #date (dd/mm/yyyy)   # This code is contributed by Nikita Tiwari

## C#

 // C# program to  Find the Day // for a Date using System;   class GFG {           // Print Day for a Date     static void Zellercongruence(int day,                        int month, int year)     {         if (month == 1)         {             month = 13;             year--;         }         if (month == 2)         {             month = 14;             year--;         }         int q = day;         int m = month;         int k = year % 100;         int j = year / 100;         int h = q + 13 * (m + 1) / 5 + k + k / 4                                   + j / 4 + 5 * j;         h = h % 7;         switch (h)         {             case 0 : Console.WriteLine("Saturday");                      break;                                    case 1 : Console.WriteLine("Sunday");                       break;                                     case 2 : Console.WriteLine("Monday");                       break;                                    case 3 : Console.WriteLine("Tuesday");                       break;                                    case 4 : Console.WriteLine("Wednesday");                       break;                                    case 5 : Console.WriteLine("Thursday");                      break;                                    case 6 : Console.WriteLine("Friday");                       break;         }     }           // Driver code     public static void Main()     {                   //date (dd/mm/yyyy)         Zellercongruence(22, 10, 2017);      } }   /* This code is contributed by vt_m */

## PHP

 

## Javascript

 

Output

Sunday


Time Complexity: O(1)
Auxiliary Space: O(1)

This article is contributed by Amartya Ranjan Saikia. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.