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)
kjer je
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}