Q&A

  • 시간 역카운터 방법 질문 드립니다?
안녕하십니까?



시간(Time) 답변을 보다가 도저히 못 찾아서 질문 올립니다.



첫번째 질문은 드릴것은?



'2001-11-11 01:00:00' 에서 '2001-11-10 23:49:49' 라는 것을 빼면

그냥 01:10:11 이라는 빼진 시간의 값을 알고 싶습니다.



두번째 질문 드릴것은?



Time이 '120:00:00' 이라는 값이 있다면, 즉 120시간이 있다면

Timer 컴포넌트를 사용해서 1초마다

-1초 씩 내려가서 00:00:00 이 되면 특정한 일을 하게 되는 프로그램을

짜고 싶습니다.



즉 -1초가 빼지면 119:59:59 가 됩니다. 그래서 -1 초씩 빼져서

119:59:00 에서 -1 이 빠지면 119:58:59 가 됩니다.

119:00:00 에서 -1 이 빠지면 118:59:59 가 됩니다.

이런 프로그램을 짜고 싶습니다.



어떻게 하면 되는지 답변 부탁드립니다.



1  COMMENTS
  • Profile
    홍성락 2001.11.20 11:23
    이재현 wrote:

    > 안녕하십니까?

    >

    > 시간(Time) 답변을 보다가 도저히 못 찾아서 질문 올립니다.

    >

    > 첫번째 질문은 드릴것은?

    >

    > '2001-11-11 01:00:00' 에서 '2001-11-10 23:49:49' 라는 것을 빼면

    > 그냥 01:10:11 이라는 빼진 시간의 값을 알고 싶습니다.

    >

    > 두번째 질문 드릴것은?

    >

    > Time이 '120:00:00' 이라는 값이 있다면, 즉 120시간이 있다면

    > Timer 컴포넌트를 사용해서 1초마다

    > -1초 씩 내려가서 00:00:00 이 되면 특정한 일을 하게 되는 프로그램을

    > 짜고 싶습니다.

    >

    > 즉 -1초가 빼지면 119:59:59 가 됩니다. 그래서 -1 초씩 빼져서

    > 119:59:00 에서 -1 이 빠지면 119:58:59 가 됩니다.

    > 119:00:00 에서 -1 이 빠지면 118:59:59 가 됩니다.

    > 이런 프로그램을 짜고 싶습니다.

    >

    > 어떻게 하면 되는지 답변 부탁드립니다.

    ////////////////////////////////////////////////////////////////////////

    아래는 그냥 두서없이 해봤습니다. 더좋은 답변이 있을듯합니다.



    //1

    procedure TForm1.Button1Click(Sender: TObject);

    var

    HYear, HMonth, HDay, Hour, Min, Sec, MSec: Word;

    HDate1, HDate2, DffDate: TDateTime;

    strDate1, strdate2, str : string;

    begin

    strdate1 := '2001-11-11 01:00:00';

    strdate2 := '2001-11-10 23:49:49';



    //시작 날짜지정

    HYear := StrToint(copy(strdate1,1,4));

    HMonth:= StrToint(copy(strdate1,6,2));

    HDay := StrToint(copy(strdate1,9,2));

    Hour := StrToint(copy(strdate1,12,2));

    Min := StrToint(copy(strdate1,15,2));

    Sec := StrToint(copy(strdate1,18,2));

    MSec := 0;

    HDate1 := EncodeDate(HYear, HMonth, HDay) + EncodeTime(Hour, Min, Sec, MSec);



    HYear := StrToint(copy(strdate2,1,4));

    HMonth:= StrToint(copy(strdate2,6,2));

    HDay := StrToint(copy(strdate2,9,2));

    Hour := StrToint(copy(strdate2,12,2));

    Min := StrToint(copy(strdate2,15,2));

    Sec := StrToint(copy(strdate2,18,2));

    MSec := 0;

    HDate2 := EncodeDate(HYear, HMonth, HDay) + EncodeTime(Hour, Min, Sec, MSec);



    DffDate := HDate1-HDate2;

    if Trunc(DffDate) > 0 then

    str := intTostr(Trunc(DffDate)) + '일'

    else

    str := '';



    Edit1.Text := str + ' ' + FormatDateTime('HH:MM:SS', DffDate-Trunc(DffDate));

    end;



    //2

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    Timer1.Enabled := True;

    end;



    procedure TForm1.Timer1Timer(Sender: TObject);

    var

    str1, str2 : string;

    Day : Word;

    DT_Count: TDateTime;

    begin

    str1 := Edit2.Text;

    str2 := copy(str1,1,Pos(':',str1)-1);

    Day := StrToint(str2) div 24;

    str1 := intToStr(StrToint(str2) mod 24)

    + copy(str1,Pos(':',str1),length(str1));

    DT_Count := Day + StrToTime(str1);

    DT_Count := DT_Count - EncodeTime(0, 0, 1, 0);



    str1 := intToStr(Trunc(DT_Count)*24

    + StrToint(FormatDateTime('HH', DT_Count-Trunc(DT_Count))));

    str2 := FormatDateTime('HH:MM:SS', DT_Count-Trunc(DT_Count));

    Edit2.Text := str1+copy(str2,Pos(':',str2),length(str2));

    if DT_Count <= 0 then Timer1.Enabled := False;

    end;