db@tc.fluke.COM (Dan Banay) (04/12/90)
The following function will return the day of the week for a given date:
(* e.g. m = 8 d = 10 y = 1988 *)
(* returns 0 = Sunday... *)
(* uses Zeller's Algorithm *)
function dayw(m,d,y:integer):integer;
var century:integer;
begin
if (m > 2)
then
m := m -2
else
begin
m := m + 10;
y := y - 1
end;
century := y div 100;
y := y mod 100;
dayw := (d-1+((13*m-1) div 5)+(5*y div 4)+(century div 4)-2*century+1) mod 7;
end;
Examples:
x := dayw(8,10,1988); (* 3 Wed *)
y := dayw(2,29,1992); (* 6 Sat *)
I can't remeber where I found the algorithm (from a magazine or book) since
I'm getting old and senile. ;-) If anyone has additional information about
Zeller's algorithm, I'd be interested in hearing about it.
Hope this helps,
Dan