Algoritem za dan v tednu

Iz Wikipedije, proste enciklopedije

Na kateri dan v tednu pade določeni datum lahko določimo z različnimi algoritmi. Eden bolj enostavnih postopkov je Zellerjev postopek (imenovan tudi Zellerjeva kongruenca).

Kateri dan v tednu je bil 7. december 1941?

Uporabimo naslednje spremenljivke:

dan  ... dan v mesecu (7) 
mes  ... mesec -2; če je mesec ni januar ali februar 
         mesec +10; če je mesec januar ali februar; v tem primeru leto zmanjšamo za 1
stol ... prvi dve števki letnice (19) 
leto ... zadnji dve števki letnice (41) 
x = d + \left\lfloor \frac{13m-1}{5} \right \rfloor   + \left\lfloor \frac{5leto}{4}  \right\rfloor   + \left\lfloor \frac{21stol}{4}  \right\rfloor kjer je \lfloor  a \rfloor celi del števila

Število x mod 7 nam da dan v tednu: 0..nedelja, 1..ponedeljek, ..., 6..sobota.

Enačba velja za gregorijanski koledar, ki velja približno do leta 4500, ko se bo tudi v tem koledarju nabral 1 dan razlike.

[uredi] Program

Funkcijski podprogram v pascalu:

function zeller(D, M, L: integer): integer; {Datum v obliki D.M.L}
 var x, dan, mes, leto, stol: integer;
 begin
   dan:=D;
   if M > 2 then mes:=M-2
            else begin mes:=M+10; L:=L-1; end;
   leto:=L mod 100;
   stol:=L div 100;
   x:=dan + (13*mes-1) div 5 + 5 * leto div 4 + 21 * stol div 4;
   zeller:=x mod 7;  { 0..nedelja, 1..ponedeljek, ..., 6..sobota }
 end;{zeller}

[uredi] Glej tudi

[uredi] Zunanje povezave