질문이 있습니다.
예를 들어 시작날짜/시간이 1999년 12월 31일 23시 30분 완료날짜가 2000년 01월 01일 24시 00분입니다.
그러면 걸린 시간(분) 30분 이렇게 나와야 하는데 잘 되질 않습니다.
현재는 각각 년 월 일 시 분 을 변수에 저장하여 문자열로 붙였는데
200001012400 - 199912312330 이것이 30분 으로 나오려면 어떤 로직을 써야 하며,
함수가 있는지 알려주세요..저는 델파이 초보자입니다.
01월 01 일 24시 00분은 01-02 00:00으로 해야 합니다.
Date Type 은 Double형이라 이를 TimeStamp 타입으로 바꾸어서 계산해야 합니다.
아래의 코드를 참고 해 주세요
함수에 시작일과 마감일을 넘기는데
형식은 '06-03-20 15:35:40' 으로 맞추어야 합니다.
function TForm1.DateCalculate(b_Date, e_Date: TDateTime): string;
var
dt1: TDateTime;
ts1,ts2,ts3: TTimeStamp;
ahh,amm,ass,ams: word;
s: string;
begin
ts1:= DateTimeToTimeStamp(b_Date);
ts2:= DateTimeToTimeStamp(e_Date);
// ts2.time 이 ts1.time 보다 적으면 이를 늘린다
if ts2.Time < ts1.Time then
begin
ts2.Date := ts2.Date -1; //하루를 빼서 시간에 더한다.
ts2.Time := ts2.Time + 86400000 ; //하루가 밀리세칸드로 86400000
//ts3.Date 가 0이면 DateTime으로 변환시 에러가 나와서 임시 더함
// delphi 5.0 에서는 에러 없이 되었슴
if ts3.Date < 100 then
ts3.Date := ts3.Date + 100;
dt1 := TimeStampToDateTime(ts3);
s:= IntToStr(ts3.Date-100 ) + '일 '; //다시 빼고 계산
//s:= s + FormatDateTime ('hh:mm:ss',dt1);
DecodeTime(dt1,ahh,amm,ass,ams);
s:= s + IntToStr(ahh) + '시간 ';
s := s + IntToStr(amm) + '분 ';
s := s + IntToStr(ass) + '초';
Result := s;
01월 01 일 24시 00분은 01-02 00:00으로 해야 합니다.
Date Type 은 Double형이라 이를 TimeStamp 타입으로 바꾸어서 계산해야 합니다.
아래의 코드를 참고 해 주세요
함수에 시작일과 마감일을 넘기는데
형식은 '06-03-20 15:35:40' 으로 맞추어야 합니다.
function TForm1.DateCalculate(b_Date, e_Date: TDateTime): string;
var
dt1: TDateTime;
ts1,ts2,ts3: TTimeStamp;
ahh,amm,ass,ams: word;
s: string;
begin
ts1:= DateTimeToTimeStamp(b_Date);
ts2:= DateTimeToTimeStamp(e_Date);
// ts2.time 이 ts1.time 보다 적으면 이를 늘린다
if ts2.Time < ts1.Time then
begin
ts2.Date := ts2.Date -1; //하루를 빼서 시간에 더한다.
ts2.Time := ts2.Time + 86400000 ; //하루가 밀리세칸드로 86400000
end;
ts3.Time := ts2.Time - ts1.Time;
ts3.Date := ts2.Date - ts1.Date;
//ts3.Date 가 0이면 DateTime으로 변환시 에러가 나와서 임시 더함
// delphi 5.0 에서는 에러 없이 되었슴
if ts3.Date < 100 then
ts3.Date := ts3.Date + 100;
dt1 := TimeStampToDateTime(ts3);
s:= IntToStr(ts3.Date-100 ) + '일 '; //다시 빼고 계산
//s:= s + FormatDateTime ('hh:mm:ss',dt1);
DecodeTime(dt1,ahh,amm,ass,ams);
s:= s + IntToStr(ahh) + '시간 ';
s := s + IntToStr(amm) + '분 ';
s := s + IntToStr(ass) + '초';
Result := s;
end;