[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]
{
I posted some routines on doing calendar math using Integers quite
a While back. That gives you a relative date of about 89 years. Use
LongInt For more. Avoids pulling in the Real lib that julian requires.
Just making them up again as I Type them in the reader. There may be a
typo or two.
}
Function leapyear (c, y : Byte) : Boolean;
begin
if (y and 3) <> 0 then
leapyear := False
else
if y <> 0 then
leapyear := True
else
if (c and 3) = 0 then
leapyear := True
else
leapyear := False;
end;
Function DaysInMonth (c, y, m : Byte) : Integer;
begin
if m = 2 then
if leapyear then
DaysInMonth := 29
else
DaysInMonth := 28
else
DaysInMonth := 30 + (($0AB5 shr m) and 1);
end;
Function DaysInYear (c, y : Byte) : Integer;
begin
DaysInYear := DaysInMonth(c, y, 2) + 337;
end;
Function DayOfYear (c, y, m, d :Byte) : Integer;
Var i, j : Integer;
begin
j := d;
For i := 1 to pred(m) do
j := j + DaysInMonth(c,y,i);
DayOfYear := j;
end;
[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]