La congruencia de Zeller es un algoritmo ideado por Christian Zeller para calcular el día de la semana para cualquier fecha del calendario juliano o gregoriano . Se puede considerar que se basa en la conversión entre el día juliano y la fecha del calendario.
Es un algoritmo para encontrar el día de la semana para cualquier fecha.
Para el calendario gregoriano es:
Para el calendario juliano es:
donde,
- h es el día de la semana (0 = sábado, 1 = domingo, 2 = lunes, …, 6 = viernes)
- q es el dia del mes
- m es el mes (3 = marzo, 4 = abril, 5 = mayo, …, 14 = febrero)
- K es el año del siglo (año % 100).
- J es el siglo de base cero (en realidad ⌊ año/100 ⌋) Por ejemplo, los siglos de base cero para 1995 y 2000 son 19 y 20 respectivamente (que no debe confundirse con la enumeración ordinal común del siglo que indica el 20 en ambos casos) .
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)
Para una fecha de la semana ISO Día de la semana d (1 = lunes a 7 = domingo), use
d = ((h+5)%7) + 1
C++
// C++ program to Find the Day // for a Date #include <cmath> #include <cstring> #include <iostream> 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
<?php // PHP program to Find the Day // for a Date function Zellercongruence($day, $month, $year) { if ($month == 1) { $month = 13; $year--; } if ($month == 2) { $month = 14; $year--; } $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; switch ($h) { case 1 : echo "Saturday \n"; break; case 2 : echo "Sunday \n"; break; case 3 : echo "Monday \n"; break; case 4 : echo "Tuesday \n"; break; case 5 : echo "Wednesday \n"; break; case 6 : echo "Thursday \n"; break; case 7 : echo "Friday \n"; break; } } // Driver code //date (dd/mm/yyyy) Zellercongruence(22, 10, 2017); // This code is contributed by ajit. ?>
Javascript
<script> // Javascript program to Find the Day for a Date // Print Day for a Date function Zellercongruence(day, month, year) { if (month == 1) { month = 13; year--; } if (month == 2) { month = 14; year--; } let q = day; let m = month; let k = year % 100; let j = parseInt(year / 100, 10); let h = q + parseInt(13 * (m + 1) / 5, 10) + k + parseInt(k / 4, 10) + parseInt(j / 4, 10) + 5 * j; h = h % 7; switch (h) { case 0 : document.write("Saturday"); break; case 1 : document.write("Sunday"); break; case 2 : document.write("Monday"); break; case 3 : document.write("Tuesday"); break; case 4 : document.write("Wednesday"); break; case 5 : document.write("Thursday"); break; case 6 : document.write("Friday"); break; } } //date (dd/mm/yyyy) Zellercongruence(22, 10, 2017); </script>
Producción:
Sunday
Este artículo es una contribución de Amartya Ranjan Saikia . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA