시작시간이 08:00
첫번째 품목(A)의 작업시간이 분단위로 계산되어져 나와서 200분이고,
10:00-10:10분까지는 쉬는시간일 경우
작업시간이 08:00-11:50으로 나오고,
두번째 품목(B)의 작업시간이 100분인데, 첫번째 품목의 작업이 끝나는 시간인 11:50분 부터 점심시간 12:00 - 13:00을 제외하고 11:50-14:30으로 나오게 하는 방법
출력물
A 08:00-11:50
B 11:50-14:30
이것좀 가르켜주세요.
과제물 절대 아님.
회사에서 작업지시내릴때 몇시부터 몇시까지 작업하라는 시간을 표시하고 싶어서임.
A만 구하는걸 예로 했습니다.
그리고 A는 08:00-11:30 아니가요, 출력포멧은 FormatDateTime류의 함수를 사용해보세요.
procedure TForm1.Button1Click(Sender: TObject);
var
AStartTime, AEndTime, AJabTime, AdelayS, AdelayE, ADiffTime,
TempEndTime : TTime;
TotalMin, Hour, Min : integer;
begin
AStartTime := StrToTime('08:00'); //A 시작시간
TotalMin := 200;
Hour := TotalMin div 60;
Min := TotalMin mod 60;
AJabTime := EncodeTime(Hour, Min, 0, 0); //A 작업시간
TempEndTime := AStartTime + AJabTime; //A 예상종료시간
AdelayS := StrToTime('10:00'); //A작업시 쉬는시작시간
AdelayE := StrToTime('10:10'); //A작업시 쉬는종료시간
//A작업시간동안 쉬는시간이 있는지 검색
ADiffTime := 0;
if not((AdelayS >= TempEndTime)or(AdelayE <= AStartTime)) then begin
if AdelayS < AStartTime then AdelayS := AStartTime;
if AdelayE > TempEndTime then AdelayE := TempEndTime;
ADiffTime := AdelayE - AdelayS;
end;
AEndTime := TempEndTime + ADiffTime;
showmessage('A: ' + TimeToStr(AStartTime) + '~' + TimeToStr(AEndTime));
end;