Comment calculer le jour de la semaine d'une année

Étape 1

Préparez l'information. Pour exécuter l'algorithme, il est nécessaire de spécifier un jour, un mois et une année. Cette liste énumère les mois de trois à quatorze, commence par mars et se termine en février. Cela garantit que les jours bissextiles tombent toujours en fin d’année, ce qui simplifie les calculs: si le mois <3, alors, mois = mois + 12.

Étape 2

Calculez le siècle et l'année. Les années 50 doivent avoir 19 ans, malgré le fait que ce chiffre reconnaît le vingtième siècle: siècle = base (année / 100) = annéeSiglo = année mod 100.

Étape 3

Trouvez le jour de la semaine au début du siècle: Weekday = base (century / 4) + 5 * century. Zeller a déterminé que ce calcul du module sept donnerait le jour de la semaine au début duquel tout siècle a commencé. Le calcul de base tient compte du fait qu’il n’ya pas de jour bissextile tous les quatre siècles.

Étape 4

Calculez le jour de la semaine au cours duquel l'année a commencé: daySweden = weekDay + yearSiglover + base (yearSiglo / 4). À l'exception des années bissextiles, chaque année, vous devez commencer le jour suivant de la semaine commençant l'année précédente. Le calcul, du module sept, donne le jour de la semaine du premier jour de l'année.

Étape 5

Trouvez le jour de la semaine où le mois a commencé: weekDay = weekDay + base ((month + 1) * 26) / 10). C'est le cœur de l'algorithme de Zeller qui a observé que ce calcul est en mesure de déterminer le jour de la semaine où le mois commencera. Avec cette formule, le besoin de tables de recherche pour déterminer la longueur de chaque mois est éliminé.

Étape 6

Ajoutez le jour du mois et calculez le jour de la semaine où se situe la date: weekDay = weekDay + daySunday = weekDay mod 7.

Étape 7

Convertissez la date aux normes de l'Organisation internationale de normalisation: la date de la semaine; le jour de la semaine commence par lundi = 1. Avec l'algorithme de Zeller, samedi est utilisé = 0. Pour la conversion, une arithmétique modulaire simple est utilisée: weekDay = ((weekDay + 5) mod 7) + 1.