안녕하십니까?
시간(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 가 됩니다.
이런 프로그램을 짜고 싶습니다.
어떻게 하면 되는지 답변 부탁드립니다.
> 안녕하십니까?
>
> 시간(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;