Un algorithme commun pour calculer le jour de la semaine d'une date en particulier est l'algorithme de Zeller . L'algorithme a été publié en 1882 et conçu pour être travaillé à la main, mais peut facilement être implémenté dans le logiciel . L'algorithme de Zeller travaille en trouvant le jour de la semaine du siècle a commencé , puis construire à partir de là en ajoutant années, mois et jours . Une bonne compréhension de l'arithmétique modulo est nécessaire de comprendre comment fonctionne l'algorithme , mais n'importe qui peut le mettre en œuvre en suivant les instructions. Instructions
1
Préparer les entrées . L'algorithme attend un jour, le mois et l'année. Numéros de l'algorithme de
Zeller Les mois de trois à 14 , en commençant par Mars et se terminant avec Février . Cela garantit que les jours bissextiles tombent toujours à la fin de l'année , ce qui simplifie les calculs.
Mois <3 puis , mois = 12 mois +
2
Calculer le siècle et l' année du siècle . Le siècle pour 1950 devrait être 19, même si elle tombe dans le XXe siècle.
Siècle = floor ( année /100) = yearOfCentury année mod 100
3
Trouver le jour de la semaine où le siècle a commencé .
dayOfWeek = floor ( siècle /4) + 5 * siècle
Zeller a déterminé que ce calcul, modulo sept ans, donnera le jour de l' semaine que toute donnée siècle a commencé . Le calcul de l' étage gère le fait que chaque quatrième siècle est à court d'un jour bissextile.
4
calculer le jour de la semaine que l'année a commencé sur .
DayOfWeek = dayOfWeek + yearOfCentury + étage ( yearOfCentury /4)
Chaque année commence le lendemain de la semaine par rapport à l'année précédente , sauf pour les années bissextiles . Ce calcul , modulo sept ans, donne le jour de la semaine de la première journée de l'année.
5
Trouver le jour de la semaine que le mois a débuté le .
DayOfWeek = dayOfWeek + étage ( ( mois + 1) * 26) /10) pour
c'est le cœur de l'algorithme de Zeller . Zeller a observé que ce calcul est capable de déterminer sur quel jour de la semaine, un mois va commencer . Il élimine le besoin de tables de consultation pour déterminer la longueur de chaque mois.
6
Ajouter le jour du mois et de calculer le jour de la semaine sur lequel tombe la date .
DayOfWeek = dayOfWeek + daydayOfWeek = dayOfWeek mod 7
7
convertir la date normes à jour ISO semaine.
ISO date de semaine du jour de la semaine commence avec lundi = 1. L'algorithme de Zeller utilise samedi = 0. La conversion utilise l'arithmétique modulo .
DayOfWeek = (( dayOfWeek + 5) mod 7 ) + 1