January 13
Un algoritmo comune per il calcolo del giorno della settimana di una data particolare, è l'algoritmo di Zeller. L'algoritmo è stato pubblicato nel 1882 e progettato per essere lavorato a mano, ma può essere facilmente implementato in software. L'algoritmo di Zeller funziona trovando il giorno della settimana del secolo iniziò, poi costruire da lì con l'aggiunta di anni, mesi e giorni. Una buona comprensione del modulo aritmetica è necessario capire come funziona l'algoritmo, ma chiunque può attuarlo seguendo le istruzioni.
1 Preparare gli ingressi. L'algoritmo si aspetta un giorno, mese e anno.
I numeri di Zeller algoritmo mesi da tre a 14, a partire da marzo e termina a febbraio. Ciò garantisce che i giorni bisestili cadono sempre alla fine dell'esercizio, semplificando calcoli.
se il mese <3 poi, mese = mesi + 12
2 Calcolare il secolo e l'anno del secolo. Il secolo per il 1950 dovrebbe essere 19, anche se cade nel ventesimo secolo.
secolo = piano (anno / 100)
yearOfCentury = anno mod 100
3 Trova il giorno della settimana in cui il secolo iniziata.
dayOfWeek = piano (sec / 4) + 5 * secolo
Zeller determinato che questo calcolo, modulo sette, darà il giorno della settimana che ogni secolo iniziato. Il calcolo piano gestisce il fatto che ogni quarto secolo è corta giorno intercalare.
4 Calcolare il giorno della settimana in cui l'anno è iniziato il.
dayOfWeek = dayOfWeek + yearOfCentury + piano (yearOfCentury / 4)
Ogni anno inizia il giorno successivo della settimana rispetto all'anno precedente, fatta eccezione per gli anni bisestili. Questo calcolo, modulo sette, dà il giorno della settimana del primo giorno dell'anno.
5 Trova il giorno della settimana che il mese iniziata.
dayOfWeek = dayOfWeek + piano ((mese + 1) * 26) / 10)
Questo è il cuore dell'algoritmo di Zeller. Zeller ha osservato che questo calcolo è in grado di determinare in quale giorno della settimana un mese avrà inizio. Si elimina la necessità di tabelle di ricerca per determinare la lunghezza di ogni mese.
6 Aggiungere il giorno del mese e calcolare il giorno della settimana in cui la data cade.
dayOfWeek = dayOfWeek + giorno
dayOfWeek = dayOfWeek 7 mod
7 Convertire la data di ISO standard di data settimana.
ISO data di giorno della settimana-di-settimane iniziano con l'algoritmo Lunedi = 1. di Zeller utilizza Sabato = 0. La conversione utilizza aritmetica semplice modulo.
dayOfWeek = ((giorno_della_settimana + 5) mod 7) + 1