귀하는 손님 이십니다
로그인
회원가입
  
  델마당 공식 은행계좌
  하나은행 227-910235-83607
  예금주 이상국(운영진)
프로젝트 게시판
투표게시판
델마당소개
기초부터 활용까지! 델파이 교육 - 데브기어
 광고문의 :
강좌, 팁, 정보 강좌, 팁, 정보 입니다.
글내용 - 강좌, 팁, 정보
 [팁] 초를 0시간 0분 0초식으로 리턴하는 로직(함수)
가을이다
(이현철)
2017-11-06 오전 10:22:25
카테고리: 팁
2309회 조회



등록된 파일이 없습니다.
개발 프로젝트중 초를 0시간 0분 0초식으로 나타내야하는 부분이 있어
간단히 함수를 만들어 보았습니다. ^^

생각나는데로 바로 만든거라.. 소스는 좀 지저분할수 있는점 ..양해부탁드립니다.

//초를 입력하면 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;