Функция DateSer
Привет, я хочу в качестве совета поделиться функцией DateSer, которую я написал
перед этим на VB. Данная функция весьма полезна но, к сожалению, ее нет в
Delphi. Применяется она так:
DecodeDate(Date,y,m,d);
NewDate:=DateSer(y-4,m+254,d+1234);
|
или приблизительно так....
function DateSer(y, m, d: Integer): TDateTime;
const
mj: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31,
31, 30, 31, 30, 31);
var
add: Integer;
begin
while (true) do
begin
y := y + (m - 1) div 12;
m := (m - 1) mod 12 + 1;
if m <= 0 then
begin
Inc(m, 12);
Dec(y);
end;
if ((y mod 4 = 0) and
((y mod 100 <> 0) or (y mod 400 = 0)))
and (m = 2) then
add := 1 //дополнительный день в феврале
else
add := 0;
if (d > 0) and (d <= (mj[m] + add)) then
break;
if d > 0 then
begin
Dec(d, mj[m] + add);
Inc(m);
end
else
begin
Inc(d, mj[m] + add);
Dec(m);
end;
end;
Result := EncodeDate(y, m, d);
end;
|
|