본문 바로가기
Delphi/프로시저-함수

초를 시간 분 초 형식으로 리턴

by MonoSoft 2021. 7. 22.
728x90
반응형

초를 시간 분 초 형식으로 리턴

 

//초를 입력하면 0시간 0분 0초 식으로 리턴한다

//ex: 4600 -> 1시간 16분 40초

function GetTimeToStr(sec : double) : string;

  function GetDigit(num : integer):string;

  var

    sss : string;

  begin

    sss := inttostr(num);

    if length(sss) = 1 then result := '0' + sss

    else                    

    result := sss;

  end;

 

  function LeftStr(const Str: string; Size: Word): string;

  begin

    LeftStr := Copy(Str,1,Size)

  end;

 

var

  rsec, hhour, mmin, ssec : integer;

  r_hour, r_min, r_sec : string;

begin

  rsec := Trunc(sec);

 

  if rsec < 60 then

    begin

      r_sec := GetDigit(rsec); if LeftStr(r_sec, 1) = '0' then delete(r_sec, 1, 1);

      result := r_sec + '초';

      exit;

    end;

 

  mmin := Trunc(rsec / 60);

  ssec := rsec - (mmin * 60);

 

  if mmin < 60 then

    begin

      r_sec := GetDigit(ssec); if LeftStr(r_sec, 1) = '0' then delete(r_sec, 1, 1);

      r_min := GetDigit(mmin); if LeftStr(r_min, 1) = '0' then delete(r_min, 1, 1);

      result := r_min + '분 ' + r_sec + '초';

      exit;

    end;

 

  hhour := Trunc(mmin / 60);

  mmin := mmin - (hhour * 60);

 

  r_sec := GetDigit(ssec); if LeftStr(r_sec, 1) = '0' then delete(r_sec, 1, 1);

  r_min := GetDigit(mmin); if LeftStr(r_min, 1) = '0' then delete(r_min, 1, 1);

  r_hour := GetDigit(hhour); if LeftStr(r_hour, 1) = '0' then delete(r_hour, 1, 1);

 

  result := r_hour + '시간 ' + r_min + '분 ' + r_sec+ '초';

end;

 

또는

 

// 다음과 같이 할 수도.....

procedure TForm1.Button1Click(Sender: TObject);

var

    secs: Integer;

begin

   secs := 4600;

   Edit1.Text := FormatDateTime('h시간n분s초', secs / secsPerDay);

end; 

 

728x90
반응형

'Delphi > 프로시저-함수' 카테고리의 다른 글

메모(TMemo) 팁  (0) 2023.06.14
StringGrid의 Cell에 입력 값 제한  (0) 2023.06.02
델파이 RTF (Rich Text Format) 사용방법  (0) 2021.07.21
델파이 JSON to Object 한줄  (0) 2021.07.20
델파이 프로시저와 함수  (0) 2021.07.19

댓글