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
|