Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 초 단위 시간을 h:m:s(시:분:초) 형식으로 변환하는 방법

프로그래밍을 하다 보면 함수가 초(seconds) 단위로 정보를 반환하지만, 실제로는 시:분:초(h:m:s) 형식으로 표시해야 하는 경우가 자주 발생합니다. 이럴 때 파이썬에서는 간단한 방법으로 초 단위 값을 사람이 읽기 쉬운 시간 형식으로 변환할 수 있습니다.

방법 1: divmod() 함수 활용

divmod() 함수는 한 번의 나눗셈 연산으로 몫과 나머지를 동시에 계산해 주는 파이썬 내장 함수입니다. 이를 활용하면 단 두 번의 수학적 연산만으로 원하는 결과를 매우 빠르게 얻을 수 있습니다.

동작 원리는 다음과 같습니다.

  • 전체 초를 60으로 나누어 분과 남은 초를 구합니다.
  • 다시 그 분을 60으로 나누어 시간과 남은 분을 구합니다.

예제 코드

seconds = 56741
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
print("%d:%02d:%02d" % (h, m, s))

출력 결과

15:45:41

%02d 포맷 지정자를 사용하면 분과 초가 항상 두 자리 숫자로 표시되어, 예를 들어 9:5:3이 아닌 09:05:03처럼 깔끔하게 출력됩니다.

방법 2: datetime.timedelta 활용

datetime 모듈의 timedelta 객체를 사용해도 동일한 기능을 구현할 수 있습니다. 코드가 더 직관적이라는 장점이 있지만, 내부적으로 추가 처리가 이루어지므로 성능 면에서는 divmod() 방식보다 다소 느립니다.

예제 코드

import datetime
timedelta_obj = datetime.timedelta(seconds=56741)
print(timedelta_obj)

출력 결과

15:45:41

정리

방법장점단점
divmod()연산 속도가 빠름, 추가 모듈 불필요포맷팅 코드를 직접 작성해야 함
timedelta코드가 간결하고 직관적상대적으로 성능 저하

대량의 데이터를 처리하거나 성능이 중요한 경우에는 divmod() 방식을, 가독성과 편의성이 우선인 경우에는 timedelta 방식을 선택하는 것이 좋습니다.