[Swift] 00:00 형식으로 시간을 출력하는 방법(10분이하버전)

Uno·2021년 4월 28일
1

Swift-Hanon

목록 보기
1/3

Q. 시간이 흐름에 따라서 UILabel의 Text를 다르게 보여주어야 한다. 예를들면 1초의 경우, 00:01 로 보여준다. 10초의 경우 0:10으로 보여준다. 1분30초의 경우 01:30 으로 보여준다. 이에 대한 로직을 구현하라.


Sol

1. 60초 이하인지 이상인지 판별한다.
  a. 만약 60초 이하인 경우,00:\(currentTime)” 으로 구성한다. 10초 이상인 경우와 이하인 경우로 다시 나눈다.. 60초이하이면서 10초 이하인 경우,00:0\(currentTime)” 
   ㄴ. 60초 이하면서 10초 이상인 경우,00:\(currentTime)” 
   
  b. 만약 60초 이상인 경우,0\(currentTime / 60):\(currentTime % 60)” 
   ㄱ. 60초 이상이지만, 초단위는 10초 이하인 경우,0\(currentTime / 60):0\(currentTime % 60)”
   ㄴ. 60초 이상이지만, 초단위는 10초 이상인 경우,0\(currentTime / 60):\(currentTime % 60)=>4 개의 경우의 수가 있다.

이를 메소드로 구현하면 다음과 같다.

/// 1,2,….100과 같은 값을 받았을 때, 00:00 의 형식으로 출력해주는 메소드
func convertTimeToFitText(time: Int) -> String {
    
 // 초와 분을 나눈다.
 let minute = time / 60
 let sec = time % 60
    
 // 1분이 넘는 경우
 if minute > 0 {
   return0\(minute):\(sec < 10 ?0\(sec): “\(sec))// 1 분이 넘지 않는 경우
 } else {  
   return00:\(sec < 10 ?0\(sec): “\(sec))}
}

생각보다 자주 사용되어 정리해봤습니다.
혹시 이 방법보다 좋은 방법 있으시면 조언해주시면 정말 감사하겠습니다!!

profile
iOS & Flutter

0개의 댓글