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

파이썬(Python)으로 초를 시·분·초 형식으로 변환하는 3가지 방법

개요

이 글에서는 초 단위로 주어진 시간을 '시:분:초' 형식으로 변환하는 파이썬 프로그램을 다룹니다.

문제 정의: 초 단위의 시간 값이 주어졌을 때, 이를 시(hour), 분(minute), 초(second)로 구성된 읽기 쉬운 형태로 변환해야 합니다.

이 문제는 크게 세 가지 방법으로 해결할 수 있습니다.

방법 1: 나눗셈 연산을 이용한 직접 계산

가장 기본적인 방식으로, 몫 연산자(//)와 나머지 연산자(%)를 활용해 각 단위를 직접 계산합니다. 외부 모듈 없이 동작하며, 로직을 명확하게 이해할 수 있다는 장점이 있습니다.

예제 코드

def convert(seconds):
    seconds = seconds % (24 * 3600)   # 24시간을 넘는 값 제거
    hour = seconds // 3600            # 시 계산
    seconds %= 3600                   # 남은 초
    minutes = seconds // 60           # 분 계산
    seconds %= 60                     # 남은 초
    return "%02d:%02d:%02d" % (hour, minutes, seconds)  # 두 자리 형식 지정

n = 23451
print(convert(n))

출력 결과

06:30:51

%02d 형식 지정자를 사용했기 때문에 한 자리 숫자도 앞에 0이 붙어 두 자리로 출력됩니다.

방법 2: datetime 모듈 활용

표준 라이브러리인 datetime 모듈의 timedelta 객체를 사용하면 단 몇 줄로 변환할 수 있습니다. 코드가 간결하고 가독성이 뛰어납니다.

예제 코드

# datetime 모듈 사용
import datetime

def convert(n):
    return str(datetime.timedelta(seconds=n))

n = 23451
print(convert(n))

출력 결과

6:30:51

다만 timedelta의 기본 출력은 시(hour) 부분 앞에 0을 채우지 않으므로, 자릿수 고정이 필요하다면 별도 포맷팅이 필요할 수 있습니다.

방법 3: time 모듈 활용

time 모듈의 gmtime() 함수로 초 값을 시간 구조체로 변환한 뒤, strftime()으로 원하는 형식의 문자열을 만들 수 있습니다.

예제 코드

# time 모듈 사용
import time

def convert(seconds):
    return time.strftime("%H:%M:%S", time.gmtime(n))

n = 23451
print(convert(n))

출력 결과

06:30:51

%H:%M:%S 형식 덕분에 시, 분, 초가 모두 두 자리로 깔끔하게 출력됩니다. 참고로 이 방식은 하루(86,400초)를 넘는 값에 대해서는 일(day) 단위가 반영되지 않으므로, 24시간 미만의 값에 적합합니다.

마무리

이번 글에서는 초를 시, 분, 초로 변환하는 세 가지 방법을 살펴보았습니다. 변환 로직을 직접 이해하고 싶다면 첫 번째 방법이, 간결한 코드가 필요하다면 datetime 또는 time 모듈을 활용하는 것이 좋습니다. 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.