Q&A

  • 현재날짜에서 입력한 숫자만큼 날짜...
델파이 도우미 여려분께 도움을 요청합니다.

저는 델파이 신생아 입니다



제가 도움을 받고자 하는것은



---> 현재날짜에 입력한 숫자를 더하면 더한 수만큼 경과한

날짜를 구하는 것입니다.



예) 현재날짜:1999년11월19일 + 입력숫자:60 = 결과 2000년01월08일



생각은 쉬울것 같아 여러가지 방법을 동원했지만 해답을 찾지못해 구원를

요청합니다.

--- 감사합니다..





2  COMMENTS
  • Profile
    안재현 1999.11.19 21:46
    골드맨 wrote:

    > 델파이 도우미 여려분께 도움을 요청합니다.

    > 저는 델파이 신생아 입니다

    >

    > 제가 도움을 받고자 하는것은

    >

    > ---> 현재날짜에 입력한 숫자를 더하면 더한 수만큼 경과한

    > 날짜를 구하는 것입니다.

    >

    > 예) 현재날짜:1999년11월19일 + 입력숫자:60 = 결과 2000년01월08일

    >

    > 생각은 쉬울것 같아 여러가지 방법을 동원했지만 해답을 찾지못해 구원를

    > 요청합니다.

    > --- 감사합니다..

    >

    >



    날짜 변수에 그냥 숫자만 더하면 될텐데요.



    var a, b : TDateTime;

    c : Integer;

    begin

    a := b + c;

    end;



    이러면 되는 걸로 알고있는 데.. 아닌가?

  • Profile
    김영대 1999.11.19 20:35
    골드맨 wrote:

    > 델파이 도우미 여려분께 도움을 요청합니다.

    > 저는 델파이 신생아 입니다

    >

    > 제가 도움을 받고자 하는것은

    >

    > ---> 현재날짜에 입력한 숫자를 더하면 더한 수만큼 경과한

    > 날짜를 구하는 것입니다.

    >

    > 예) 현재날짜:1999년11월19일 + 입력숫자:60 = 결과 2000년01월08일

    >

    > 생각은 쉬울것 같아 여러가지 방법을 동원했지만 해답을 찾지못해 구원를

    > 요청합니다.

    > --- 감사합니다..



    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);