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

파이썬으로 12시간 형식 시간을 24시간 형식으로 변환하는 방법

컴퓨터(PC)에 표시된 시간을 받아 24시간 형식으로 변환하는 파이썬 프로그램을 만들어 보겠습니다. 이 과정에서는 문자열 슬라이싱(string slicing) 기법을 활용하므로, 별도의 외부 라이브러리 없이 간단하게 구현할 수 있습니다.

변환 규칙

12시간 형식을 24시간 형식으로 바꿀 때는 다음 두 가지 기본 규칙을 따릅니다.

  • 시간이 PM(오후)이면 시(hour) 부분에 12를 더합니다.
  • 시간이 AM(오전)이면 시 부분을 그대로 사용합니다.

다만 자정과 정오는 특수한 경우이므로 별도로 처리해야 합니다.

  • 12:xx:xx AM → 00:xx:xx (자정)
  • 12:xx:xx PM → 12:xx:xx (정오)

예시

입력: 07:05:45 PM
출력: 19:05:45

알고리즘

  1. 현재 날짜와 시간(datetime)을 입력받습니다.
  2. datetime 객체에서 시간 부분만 문자열로 추출합니다.
  3. 문자열 슬라이싱을 사용해 마지막 두 글자가 PM인지 AM인지 확인합니다.
  4. 마지막 두 글자가 PM이면 시 부분에 12를 더하고, AM이면 그대로 반환합니다.

예제 코드

import datetime

def timeconvert(str1):
    # 자정(12 AM)인 경우 00으로 변경
    if str1[-2:] == "AM" and str1[:2] == "12":
        return "00" + str1[2:-2]
    # 일반적인 오전 시간은 그대로 유지
    elif str1[-2:] == "AM":
        return str1[:-2]
    # 정오(12 PM)는 그대로 유지
    elif str1[-2:] == "PM" and str1[:2] == "12":
        return str1[:-2]
    # 오후 시간은 시 부분에 12를 더함
    else:
        return str(int(str1[:2]) + 12) + str1[2:8]

dt = datetime.datetime.now()
print("Conversion Of Time ::", timeconvert(dt.strftime("%I:%M:%S%p")))

핵심은 strftime()의 형식 지정자입니다. %I:%M:%S%p를 사용하면 "07:05:45PM"처럼 AM/PM 표시가 붙은 12시간 형식의 문자열을 얻을 수 있습니다. 반면 %H:%M:%S는 처음부터 24시간 형식을 반환하기 때문에 AM/PM 여부를 판별할 수 없으므로 주의해야 합니다.

출력 결과

Conversion Of Time :: 19:04:53

이처럼 문자열 슬라이싱과 조건문만으로도 12시간 형식과 24시간 형식 사이의 변환을 손쉽게 구현할 수 있습니다. 실무에서는 datetime 모듈의 strftime()strptime()을 조합하거나, 서드파티 라이브러리인 dateutil을 활용하는 방법도 함께 고려해 보시기 바랍니다.