Q&A

  • 날짜 이동 어떻게?
안녕하세요.

날짜를 하루 이전/이후는 FormatDateTime("yyyy-mm-dd", StrToDate(tDate)+1);

이런식으로 해서 하니깐.. 되거든요. 그런데



날짜를 한달 이전/이후로

1년 이전/이후로 이동하는 방법을

어떻게 구현하는 알고 싶습니다.



1  COMMENTS
  • Profile
    김영대 1999.08.30 18:00
    강민주 께서 말씀하시기를...

    > 안녕하세요.

    > 날짜를 하루 이전/이후는 FormatDateTime("yyyy-mm-dd", StrToDate(tDate)+1);

    > 이런식으로 해서 하니깐.. 되거든요. 그런데

    >

    > 날짜를 한달 이전/이후로

    > 1년 이전/이후로 이동하는 방법을

    > 어떻게 구현하는 알고 싶습니다.

    >



    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 //add one day in February

    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;





    // 사용예제

    DecodeDate(Date, y, m, d);

    NewDate := DateSer(y-4, m+254, d+1234);