C: Día de la semana
Calcular el día de la semana usando la fórmula de Zeller
Lenguaje: C (compilador: GCC 3)
Categoría: Fecha y hora
/* Fuente procedente de ErrorDeSintaxis.es */
/* Calcular el día de la semana usando la fórmula */
/* de Zeller */
/* Compilador: GCC 3 */
/* Nivel: Intermedio */
/* Disponible desde 08/01/2012 */
/* Aportado por Nacho */
/* Autor original: Equipo de RosettaCode.org */
/* Web original: http://rosettacode.org/wiki/Day_of_the_week#C */
/* De: http://mathforum.org/library/drmath/view/62324.html Here we're defining k = day of month m = month number, taking Mar=1, ..., Dec=10, Jan=11, Feb=12 d = last two digits of year, using the previous year for Jan and Feb c = first two digits of year The formula is then f = k + [(13*m - 1)/5] + d + [d/4] + [c/4] - 2*c */ #include <stdio.h> /* Calculate day of week in proleptic Gregorian calendar. Sunday == 0. */ int wday(int year, int month, int day) { int adjustment, mm, yy; adjustment = (14 - month) / 12; mm = month + 12 * adjustment - 2; yy = year - adjustment; return (day + (13 * mm - 1) / 5 + yy + yy / 4 - yy / 100 + yy / 400) % 7; } int main() { int y; for (y = 2008; y <= 2121; y++) { if (wday(y, 12, 25) == 0) printf("%04d-12-25 ", y); } return 0; }