Article View: be.misc
Article #48836Re: GEZOCHT: Berekening van variabele feestdagen
From: Johan Verheven
Date: Tue, 21 Jan 1997 00:00
Date: Tue, 21 Jan 1997 00:00
72 lines
3253 bytes
3253 bytes
> Ven Dirk <vend@glo.be> wrote in article
> <32e39531.23216464@news.z03.glo.be>...
> > Gegroet!
> >
> > Ik ben een programmaatje aan het ineenknutselen, dat rekening moet
> > houden met de wettelijke feestdagen. Heeft er iemand ��n of ander
> > formuletje om te berekenen op welke datum de variabele feestdagen
> > (Pasen e.d.) vallen?
Had een tijdje geleden dezelfde vraag ziehier de oplossingen die ik
kreeg
De Duitse wiskundige Gauss heeft in 1800 een formule bedacht --
misschien
dezelfde uit jouw script, dat valt voor mij zo niet na te gaan.
in pseudocode:
J = jaartal
a = J mod 19 {rest bij deling door 19}
b = J mod 4
c = J mod 7
IF 1582 <= J <= 1699 THEN
M = 22
N = 2
ELSE IF 1700 <= J <= 1799 THEN
M = 23
N = 3
ELSE IF 1800 <= J <= 1899 THEN
M = 23
N = 4
ELSE IF 1900 <= J <= 2099 THEN
M = 24
N = 5
ELSE IF 2100 <= J <= 2199 THEN
M = 24
N = 6
ENDIF
d = (19*a + M) mod 30
e = (2*b + 4*c + 6*d + N) mod 7
paaszondag = maart[22 + d + e] {de "22 + d + e"-ste maart}
IF paaszondag > 31 THEN paaszondag = april[d + e - 9] ENDIF
IF (d=28) AND (a>10) THEN
IF paasdatum = april[25] THEN paasdatum = april[18] ENDIF
IF paasdatum = april[26] THEN paasdatum = april[17] ENDIF
ENDIF
OF
Op zich is het berekenen ervan niet zo ingewikkeld. Pasen valt op de
eerste zondag na de eerste volle maan na het begin van de lente (21-03).
De enige lastige factor is dan dus de volle maan berekening. Het
handigste is een uitgangsdatum+tijd te kiezen waarop je zeker weet dat
het volle maan was (staat in elke serieuze agenda), aan de hand daarvan
kun je makkelijk verder rekenen. Het was bijvoorbeeld volle maan op
27-03-1994 om 13:09.
De tijd tussen twee volle manen (sydonische cyclus) is 29,530588n dagen,
oftewel ongeveer 29 dagen, 12 uren, 44 minuten, 2 seconden en 20 frames
(24 frames/sec).
Het is handig is om JDN (Julian date number) of GDN (Gregorian date
number) te gebruiken voor het berekenen van de volle maan cyclus. Een
JDN/GDN is een uniek nummer voor een datum waarmee zeer eenvoudig
tijdcalculaties gedaan kunnen worden.
De stand van de maan wordt het vaakst uitgedrukt in een JDN. Algoritmes
voor conversie van datum naar JDN en vice versa zijn op CompuServe te
vinden (bvb GO DDJFORUM),
Ik heb ooit eens een algoritme in C gemaakt voor het berekenen van de
maan-cyclus (voor een planningspakket waarin de feestdagen gekenmerkt
moesten worden). Dit betrof een commercieel pakket, dus kan ik de source
niet vrijgeven. Maar het is dus heel goed te doen en ik hoop je hiermee
op de goede weg te hebben geholpen.
Technical Details
Message-ID:
<32E51A28.3B49@compuserve.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<32e39531.23216464@news.z03.glo.be> <01bc06e9$7c8ea100$6e1a89c2@pc10.smiley.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: 105c73,be9d381c0c3fee1a X-Google-Attributes: gid105c73,public From: Johan Verheven <101345.1160@compuserve.com> Subject: Re: GEZOCHT: Berekening van variabele feestdagen Date: 1997/01/21 Message-ID: <32E51A28.3B49@compuserve.com> X-Deja-AN: 211319425 references: <32e39531.23216464@news.z03.glo.be> <01bc06e9$7c8ea100$6e1a89c2@pc10.smiley.be> content-type: text/plain; charset=iso-8859-1 organization: CompuServe Incorporated mime-version: 1.0 reply-to: 101345.1160@compuserve.com newsgroups: be.misc x-mailer: Mozilla 3.0Gold (Win95; I)