Nwlapcug.com


Come calcolare il giorno della settimana per ogni anno

Come calcolare il giorno della settimana per ogni anno


Un comune per calcolare il giorno della settimana di una data particolare è algoritmo di Zeller. L'algoritmo è stato pubblicato nel 1882 e progettato per essere lavorato a mano, ma può essere facilmente implementato nel software. Algoritmo di Zeller funziona trovando il giorno della settimana al secolo iniziato, quindi costruire da lì con l'aggiunta di anni, mesi e giorni. Una buona comprensione del modulo aritmetico è necessaria capire come funziona l'algoritmo, ma chiunque può realizzare seguendo le istruzioni.

Istruzioni

1

Preparare gli ingressi. L'algoritmo prevede che un giorno, mese e anno.

Algoritmo di Zeller numera i mesi da tre a 14, a partire da marzo e termina con febbraio. Questo garantisce che il salto giorni sempre cadano alla fine dell'anno, semplificando i calcoli.

Se mese < 3 quindi, mese = mese + 12

2

Calcolare il secolo e l'anno del secolo. Il secolo per 1950 dovrebbe essere 19, anche se cade nel ventesimo secolo.

secolo = floor(year / 100)
yearOfCentury = anno mod 100

3

Trovare il giorno della settimana in cui ha cominciato il secolo.

dayOfWeek = floor(century/4) + 5 * secolo

Zeller determinato che questo calcolo, modulo sette, darà il giorno della settimana che qualsiasi dato secolo iniziato. Il calcolo del piano gestisce il fatto che ogni quarto secolo è breve un salto giorno.

4

Calcolare il giorno della settimana che ha avuto inizio l'anno.

dayOfWeek = dayOfWeek + yearOfCentury + floor(yearOfCentury/4)

Ogni anno inizia il giorno successivo della settimana rispetto l'anno precedente, fatta eccezione per gli anni bisestili. Questo calcolo, modulo sette, dà il giorno della settimana del primo giorno dell'anno.

5

Trovare il giorno della settimana che il mese iniziato su.

dayOfWeek = dayOfWeek + piano ((month + 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 avrà inizio un mese. Elimina la necessità per le tabelle di ricerca determinare la lunghezza di ogni mese.

6

Aggiungere il giorno del mese e calcolare il giorno della settimana in cui cade la data.

dayOfWeek = dayOfWeek + giorno
dayOfWeek = dayOfWeek mod 7

7

Convertire la data in standard ISO settimana data.

Settimana ISO data giorno-della-settimana inizia con lunedì = 1. Algoritmo di Zeller utilizza sabato = 0. La conversione utilizza semplice modulo aritmetico.

dayOfWeek = ((dayOfWeek + 5) mod 7) + 1

Consigli & Avvertenze

  • Questo algoritmo funziona solo per date gregoriane. Per date precedenti, sarà necessario un calcolo diverso.