Algoritme for å bestemme ukedag

For å regne ut på hvilken ukedag en bestemt dato falt i fortid eller vil falle i fremtiden, kan man bruke ulike algoritmer. Alternativt kan man benytte evighetskalendere, som ikke krever noen beregninger fra brukerens side. Typisk kan man ønske å fastslå på hvilken ukedag noen ble født eller på hvilken ukedag en spesifikk historisk begivenhet fant sted.


== Innføring ==
For å bestemme ukedagen til en dato fra numeriske beregninger, starter man ved å tildele hver av de syv ukedagene (søndag, mandag, … lørdag) et tall, i rekkefølge. Vanligvis brukes 0 til 6, som tilsvarer ISO 8601s  alternative bruk av 1 = mandag til 7 = søndag. Dette oppnås ved aritmetikk modulo 7. Modulo 7 er en operasjon som beregner resten av et tall når det deles med 7, for eksempel er 10 modulo 7 lik 3. Da behandles tallet 7 som null, tallet 8 som 1, tallet 9 som 2, osv. Dette tolkes slik at om søndag representeres som 0, så er 7 dager senere også en søndag, 8 dager senere er en mandag, osv.
Utgangspunktet for så godt som alle disse metodene er å starte med en gitt historisk dato hvor ukedagen er kjent, for eksempel ta utgangspunkt i at 1. januar 1800 var en onsdag. Deretter regner man ut hvor mange dager det er mellom den datoen og datoen man ønsker å finne ukedagen til. Til slutt bruker man modulær aritmetikk 7 for å fastslå på hvilken ukedag den aktuelle datoen falt eller vil falle.
En standardmetode er å slå opp numerisk verdi for første ukedag i et gitt århundre, slå opp (eller beregne, ved en kongruensmetode) en månedkorreksjon, beregne antall skuddår siden starten av århundret, endelig legge disse sammen med antall år siden århundrets begynnelse. Til slutt finner man antall forløpte dager og bruker modulo 7 for å bestemme ukedagen.Man kan enten summere først og finne resten (ved deling med 7) til slutt eller finne resten ved hvert trinn, som i Lewis Carrolls metode. Begge metodene er praktiske, den første metoden er enklere for elektroniske kalkulatorer og dataprogrammer, mens den siste kan være bedre egnet for hoderegning. Ingen av metodene gitt her sjekker inngangsdata, så hvis en starter med ufornuftige datoer vil det gi feil svar.


== Nyttige begrep ==


=== Samsvarende måneder ===
«Samsvarende måneder» er de månedene innenfor samme kalenderår som starter på samme ukedag. For eksempel er det samsvar mellom september og desember, fordi 1. september faller på samme ukedag som 1. desember. Måneder kan bare samsvare hvis antallet dager mellom deres førstedager er delelig med 7, med andre ord, om det er et helt antall uker mellom deres førstedager. For eksempel februar samsvarer med mars (unntatt skuddår) fordi februar har 28 dager, som er nøyaktig fire uker. I et skuddår vil januar og februar ha andre samsvarsmåneder enn i et vanlig år, siden 29. februar betyr at alle senere måneder starter en dag senere.
Månedene samsvarer slik:
For vanlige år:

januar og oktober.
februar, mars og november.
april og juli.
Ingen måneder samsvarer med august.For skuddår:

januar, april og juli.
februar og august.
mars og november.
Ingen måneder samsvarer med oktober.For alle årene:

september og desember.
Ingen måneder samsvarer med mai eller juni.I månedtabellen under, så har samsvarende måneder det samme tallet, et faktum som følger direkte fra definisjonen.


=== Samsvarende år ===
Det er syv mulige forskjellige ukedager et år kan starte, og skuddår vil endre ukedagen for alle dager etter 29. februar.  Dette betyr at et år kan ha 14 forskjellige konfigurasjoner (med andre ord, det er 14 forskjellige mulige årskalendere). For eksempel, 2011 er et normalår som begynner på en lørdag, som betyr at 2011 samsvarer med kalenderåret 2005. Men 2012 er et skuddår som starter på en søndag, som betyr at de første to månedene det året starter på samme dag som de gjør i 2006 (1. januar er en søndag, mens 1. februar er en onsdag), men på grunn av skuddår, så samsvarer de ti siste månedene det året med de ti siste månedene av 2007.


== En tabellmetode for å beregne ukedag ==


=== Grunnleggende metode for hoderegning ===
Denne metoden er gyldig både for den den gregorianske kalenderen  og for den julianske kalenderen. Storbritannia med sine kolonier begynte å bruke den gregorianske kalenderen på torsdag 14. september 1752, dagen før denne var onsdag, 2. september 1752 (Old Style).  De områdene som nå utgjør USA begynte å bruke den nye kalenderen på forskjellige tidspunkt, avhengig av hvilken kolonimakt de lå under: Spania og Frankrike hadde brukt den nye kalenderen siden 1582, mens Russland stadig brukte den julianske kalenderen da Alaska ble kjøpt fra dem i 1867.
Formelen er 
  
    
      
        d
        +
        m
        +
        y
        +
        
          ⌊
          
            
              y
              4
            
          
          ⌋
        
        +
        c
        
        mod
        
        
        7
      
    
    {\displaystyle d+m+y+\left\lfloor {\frac {y}{4}}\right\rfloor +c\mod {7}}
  , hvor:

d er dag i måneden,
m er månedens tall i månedstabellen,
y er de to siste siffrene i årstallet, og
c er århundretallet. For en gregoriansk dato så er dette 6 hvis de første to sifrene i årstallet er delelig med fire og etterfølgende århundrer er 4-2-0 (så århundretallene for 2000, 2100, 2200, og 2300 er respektive 6, 4, 2 og 0).  For en juliansk dato, så er dette 6 for 1200 og etterfølgende århundrer trekker man fra 1 inntil 0, så er neste århundre 6 igjen (så 1300 er 5 og 1100 er 0).Hvis resultatet er 0, så var datoen en søndag, hvis 1, en mandag, osv.


=== Dagstabell ===


=== Månedstabell ===


=== Årstabell ===


=== Århundrestabell ===


=== Fullstendig tabell ===
For å bestemme ukedag (1. januar 2000, lørdag)

dag i måneden: 1 ~ 31 (1)
måneden: 1 for januar ~ 12 for desember (1，man) 
året: 00 ~ 99 mod 28 og kursiv for januar eller februar i skuddår (00 ~ man)
århundre mod 4 for den gregorianske kalenderen og mod 7 for den julianske kalenderen (20 or 0 ~ lør).For å bestemme søndagsbokstaven til et årstall: (2100 C ~ 2199 F)

the century column: from the century row to Sun which is in the column and in the row (21 or 1)
the dominical letter: Mon for A ~ Sun for G from the year row to the century column (00 ~ Wed for C, 15 for 99 ~ Sat for F).For den gregorianske datoen 1. januar 2000 (et skuddår):

The day of the month: 1
January in the months table: 6
Last two digits of year (divided by 4): 0
Century number: 6The result is 13, leaving a remainder of 6 when divided by 7, so January 1, 2000 was a Saturday.
For den julianske datoen 13. oktober 1307:

The day of the month: 13
October in the months table: 0
Last two digits of year divided by 4: 1
Last two digits of year: 7
Century number: 5The result is 26, leaving a remainder of 5 when divided by 7, so October 13, 1307 was a Friday.


== Gauss' algoritme ==


=== Formler utledet fra Gauss' algoritme ===


=== Andre varianter ===


== Andre, rent matematiske algoritmer ==
Zellers algoritmeKraitchiks algoritmeSchwerdtfegers variantTønderings algoritmeDinhs algoritme


== Andre metoder (som bruker tabeller eller lignende) ==


=== Lewis Carrolls metode ===


=== Implementasjons-avhengige metoder av Sakamoto, Lachman, Keith og Craver ===


=== Babwanis metode ===


== Se også ==
Ukenummer: Enkel utregning av ukesnummer
Ukedager: Enkel utregning av ukedag
ISO 8601
Søndagsbokstav
Påskeformelen
Solsyklus
Gyldentall


== Referanser ==


== Litteratur ==
Gauss, Carl F. (1981). «Den Wochentag des 1. Januar eines Jahres zu finden. Güldene Zahl. Epakte. Ostergrenze.». Werke. herausgegeben von der Königlichen Gesellschaft der Wissenschaften zu Göttingen. (2. Nachdruckaufl. utg.). Hildesheim: Georg Olms Verlag. s. 206–207. ISBN 9783487046433. 
Hale-Evans, Ron (2006). «Hack #43: Calculate any weekday». Mind performance hacks (1st utg.). Beijing: O'Reilly. s. 164–169. ISBN 9780596101534. 
Thioux, Marc; Stark, David E.; Klaiman, Cheryl; Schultz, Robert T. (2006). «The day of the week when you were born in 700 ms: Calendar computation in an autistic savant.». Journal of Experimental Psychology: Human Perception and Performance. 32 (5): 1155–1168. doi:10.1037/0096-1523.32.5.1155. 
Treffert, Darold A. «Why calendar calculating?». Islands of genius : the bountiful mind of the autistic, acquired, and sudden savant (1. publ., [repr.]. utg.). London: Jessica Kingsley. s. 63–66. ISBN 9781849058735. 


== Eksterne lenker ==
Compact tabular method for memorization, also for the Julian calendar
An algorithm for both Gregorian and Julian calendars
When countries changed from the Julian calendar
World records for mentally calculating the day of the week in the Gregorian calendar 
A recent reworking of the method of Keith & Craver eliminating the need to recall a value for each year.
A trainer for mental calculation of the day of the week