www.wikidata.da-dk.nina.az
Den gregorianske kalender er den almindelige danske kalender som vi bruger til at holde styr pa hvilken dato det er i lobet af aret Den gregorianske kalender folges i bl a Danmark Indholdsfortegnelse 1 Historie 2 Algoritme til beregning af dato og ugedag mv 2 1 Datostandard 2 2 Ugenumre 2 3 Genbrug af den gregorianske kalender 2 4 Opbygning af algoritme 2 5 Beregning af ugedag 2 6 Beregning af antal dage mellem to datoer 2 7 Kontrol af om en dato er ok 2 8 Adder N dage til en dato og udregn den nye dato 3 Litteratur 4 Se ogsaHistorie Rediger Uddybende artikel Skiftet fra juliansk til gregoriansk kalender At lave en kalender der praecis daekker et ar giver lidt problemer da det tropiske ar ikke er pa 365 dogn men pa 365 24219878 dogn Da den overskydende del siden oldtiden har vaeret erkendt til at vaere et kvart dogn indforte Julius Caesar efter forslag af graekeren Sosigenes i ar 46 f Kr den julianske kalender Ifolge den julianske kalender skulle ar delelige med tallet fire vaere skudar dvs indeholde 366 dage i stedet for normalar pa 365 dage Det julianske ar har derfor laengden 365 25 dage Arslaengden pa 365 25 dage gjorde dog at der i 1500 tallet var kommet en afvigelse pa ca 10 dogn Dette problem blev lost i 1582 da pave Gregor XIII indforte den gregorianske kalender Samtidig med indforelsen af denne kalender blev datoen rettet med 10 dage den 4 oktober blev efterfulgt af den 15 oktober Det er bemaerkelsesvaerdigt at den gregorianske kalender blev fastlagt medens det fejlagtige geocentriske verdensbillede endnu var det vedtagne Den gregorianske kalender har ligesom den julianske skudar hvert fjerde ar men til gengaeld er ar delelige med 100 ikke skudar Dog er disse hele hundredear alligevel skudar hvis de er delelige med 400 Denne sidste regel skal i sagens natur kun benyttes sjaeldent men kom i anvendelse i ar 2000 som var skudar Denne beregningsmetode giver en arslaengde pa i snit 365 2425 dage meget taet pa det onskede Denne kalender giver kun en fejl pa ca 3 dage pa 10 000 ar I Danmark blev den gregorianske kalender indfort den 1 marts 1700 efter forarbejde af Ole Romer Man stoppede med brug af den julianske kalender den 18 februar altsa et spring i datoen pa 11 dage Den gregorianske kalender blev imidlertid indfort af paven kort efter Luther og reformationen sa mange protestantiske og ortodokse fyrstedommer og lande valgte forst at indfore den nye kalender meget senere for ikke at give indrommelser over for modparten Storbritannien indforte den nye kalender i 1752 Sverige og Finland overgik til kalenderen i 1753 ved at udelade 11 dage af aret den 17 februar 1753 som derved blev til den 1 marts Selv om Sovjetunionen overgik fra den julianske kalender til den gregorianske kalender den 14 februar 1918 benytter den russisk ortodokse kirke stadig den gamle julianske kalender og derved fejres julen i Rusland senere end i Vesteuropa omtrent pa samme tidspunkt som vi fejrer helligtrekonger Desuden fejredes oktoberrevolutionen efter den gregorianske kalender i november selv om den faktisk skete i oktober efter den julianske kalender I Storfyrstendommet Finland der var underlagt Det Russiske Kejserrige anvendtes den gregorianske kalender som i 1800 tallet afveg med 12 dage og i 1900 tallet med 13 dage fra de ovrige dele af kejserriget Eftersom der fulgtes forskellige kalendere i Rusland og i Finland blev alle dokumenter vedrorende Finland i Skt Petersborg udfaerdiget med dobbelt dato en ny og en gammel af praktiske arsager Algoritme til beregning af dato og ugedag mv RedigerDatostandard Rediger I Danmark har vi to valgmuligheder for at skrive en dato Den traditionelle danske er dd mm aaaa hvilket vil sige at raekkefolgen er dag maned og ar Et eksempel pa dette kunne vaere 29 12 2005 Udover dette kan den internationale standard ISO 8601 ogsa benyttes Heraf fremgar det at datoer skrives som aaaa mm dd hvor et eksempel kunne vaere 2005 12 29 Hvis du skriver manedens navn ud skal det skrives i raekkefolgen dag maned og ar Med det samme eksempel vil det blive d 29 december 2005 Ugenumre Rediger Det er torsdagen der bestemmer hvilket ar en uge tilhorer Derfor er ugen fra mandag den 28 december 2009 til sondag den 3 januar 2010 uge 2009 53 da torsdagen den 31 december er i 2009 Genbrug af den gregorianske kalender Rediger Den gregorianske kalender kan genbruges hvert 28 ar Dog med undtagelse af nar et arhundredeskifte ikke er et skudar Derfor havde bl a ar 1900 og ar 1928 ikke den samme kalender Ar 1928 var et skudar og havde altsa 29 dage i februar mens ar 1900 ikke var et skudar da 1900 ikke er deleligt med 400 og derfor kun havde 28 dage i februar Opbygning af algoritme Rediger Skal man til at beregne ugedag eller antal dage mellem to datoer i den gregorianske kalender vil en algoritme kun give fornuftige data safremt man tager hensyn til hvilket land det drejer sig om og datoen for den gregorianske kalenders indforelse samt hvilken dato man foretog justeringen Det forste man opdager ved at se pa kalenderen er at den er opbygget af ar maneder og dage hvor der ikke umiddelbart ser ud til at vaere nogen paen lineaer sammenhaeng Et brute force kodet program til ugedagsberegning vil derfor kunne komme til at besta af mange if case konstruktioner til at tage hojde for de forskellige regler For at undga dette indser man at der ma laves en anden skala f eks antal dage siden et fiktivt ar 0 Dette er meget nemmere at udregne idet reglerne i den gregorianske kalender er meget klare Sa antallet af dage fra ar 0 til den 0 januar kan sa beregnes pa folgende made der benyttes heltals divison Faktor 365 AR AR 1 4 AR 1 100 AR 1 400 Forkortes lidt fas Faktor 365 AR AR 1 4 AR 1 100 3 4 Naeste problem bliver februar som kan vaere pa enten 28 eller 29 dage Alle andre maneder har et fast antal dage Det nemmeste er at flytte arets start til marts idet februar derved kommer sidst Nu er det ikke nodvendigt at tages hensyn til om det er skudar eller ej nar den aktuelle faktor skal udregnes for en given dato Derefter mangler der kun at skabe en lineaer sammenhaeng mellem dag i aret og aktuel maned og dag Hvis man starter med at taelle fra marts far man folgende tabel Maned Antal dage Dag i aret marts 31 0april 30 31maj 31 61juni 30 92juli 31 122august 31 153september 30 184oktober 31 214november 30 245december 31 275januar 31 306februar 28 29 337I alt 365 366Nu kunne en sadan tabellosning vaere ideel og de fleste ville nok kunne stille sig tilfreds her Algoritmen ville komme til at se ud som folgende der benyttes heltals divison if Maned lt 3 da skuddagen er den 29 2 skal skuddag ikke medregnes i jan feb sa derfor benyttes AR 1 Faktor 365 AR AR 1 4 AR 1 100 3 4 tabel Maned Dag else Faktor 365 AR AR 4 AR 100 3 4 tabel Maned Dag Tabellen kan forenkles noget Tegner man tabellen pa millimeterpapir og gives januar og februar henholdsvis manedsnummeret 13 og 14 vil man opdage at man naesten kan tegne en ret linje gennem de plottede punkter Ved enten at aflaese eller ved at benytte lineaer regression kan man fa haeldningskoefficient m og skaering med Y aksen b m 30 6013986 b 91 77855478 Ved beregningen fremkom korrelationskoefficienten 0 999996 som er et ganske godt resultat da 1 00 ville vaere fuldkommen korrelation Tabellen fra for kan derfor erstattes med round Maned 30 60 91 78 Int Maned 30 60 91 78 0 5 Int Maned 30 60 91 28 For ikke at skulle benytte reelle tal float udregnes det hele i en heltal udgave og samtidig forenkles beregningen ved januar og februar Den faerdige rutine bliver sa factor define LONGWORD unsigned int LONGWORD factor RTCtime tm WORD y m y tm gt year m tm gt month if tm gt month lt 3 y m 12 return 365UL y y 4UL y 100 1 3 4 m 3060 9135 100 tm gt day 59 Datastrukturen for RTCtime er lavet for at holde lidt styr pa dag maned og ar Beregning af ugedag Rediger Der er 7 dage i en uge og dagene gentager sig hele tiden sa beregning af ugedag kan nemt gores ved modulus 7 Onskes derudover at sondag er ugedag nr 0 skal der forst adderes 6 til faktoren weekday returns weekday sun 0 mon 1 int weekday RTCtime tm return int factor tm 6 7UL Beregning af antal dage mellem to datoer Rediger Denne kan gores meget enkel med factor Dage labs factor Dato1 factor Dato2 C funktionen labs udregner den absolutte vaerdi Kontrol af om en dato er ok Rediger Ved indtastning af datoer er der ofte behov for at kontrollere om datoen er gyldig sa f eks datoer som d 29 februar 1995 eller 31 april ikke accepteres Aret kontrolleres pa saedvanlig vis evt suppleret med at det for Danmark skal vaere fra og med marts 1700 Maneden er nem at kontrollere idet det selvfolgelig er et tal fra 1 til 12 Antallet af dage i maneden kan med factor let beregnes idet den fremgar som antallet af dage mellem den forste i den aktuelle maned og den 1 i naeste maned En simpel procedure til at foretage en sadan kontrol er date ok date ok int date ok RTCtime t returns 0 if date not ok else days in month is returned LONGWORD f1 RTCtime tmp if t gt year lt 1 t gt year gt 9998 return 0 if t gt month lt 1 t gt month gt 12 return 0 if t gt day lt 1 return 0 tmp t tmp day 1 f1 factor amp tmp tmp month if f1 factor amp tmp f1 lt t gt day return 0 else return int f1 if ok return days in month Adder N dage til en dato og udregn den nye dato Rediger Det nemmeste er at udregne factor for datoen og addere de N dage F factor dato N Derefter divideres med 365 2425 og det fremkomne tal skulle gerne vaere arstallet AR F 10000UL 3652425UL Som kontrol udregnes F1 factor 1 jan AR og F2 factor 1 jan AR 1 Hvis der pa grund af afrundingsfejl ikke gaelder uligheden F1 F lt F2 Ma AR korrigeres med 1 Maneden findes lettes ved at udregne Fm factor 1 MD AR for alle maneder startende med MD 1 indtil Fm gt F Dagen kan sa findes som differencen mellem Fm og F Litteratur RedigerTI Programmerbar 58 59 Standardbibliotek 1977 manual Nordisk Konversations Leksikon Focus 1972 Gjellerup Databog i fysik og kemi F amp K forlaget ISBN 87 87229 09 9 http www rundetaarn dk dansk observatorium gregory html Arkiveret 27 september 2007 hos Wayback MachineSe ogsa RedigerSymmetri454 el Symmetri454 kalenderen Sym454 forslag fra 1970 erne til en reform af den gregorianske kalender Hentet fra https da wikipedia org w index php title Gregorianske kalender amp oldid 11316358