프로그래밍을 하다 보면 현재 시간과 특정 시간 사이의 차이를 계산해야 하는 경우가 자주 발생합니다. 이럴 때 시(hour)와 분(minute)을 매개변수로 받아 두 시간의 차이를 구하는 함수를 직접 정의하면 간단하게 해결할 수 있습니다.
두 시간을 분 단위로 변환한 뒤 서로 빼고, 그 결과를 다시 시와 분으로 환산하여 출력하는 방식입니다. 아래 예제를 통해 자세히 살펴보겠습니다.
예제 코드
def difference_time(h_1, m_1, h_2, m_2):
t_1 = h_1 * 60 + m_1
t_2 = h_2 * 60 + m_2
if (t_1 == t_2):
print("The times are the same")
return
else:
diff = t_2-t_1
hours = (int(diff / 60)) % 24
mins = diff % 60
print(hours, ":", mins)
if __name__ == "__main__":
print("The difference between times are given below :")
difference_time(13,20,11, 49)
difference_time(17, 11, 9, 59)
difference_time(21, 4, 11, 34)실행 결과
The difference between times are given below : 23 : 29 17 : 48 15 : 30
코드 설명
함수 정의:
difference_time이라는 이름의 함수를 정의하고, 첫 번째 시간의 시·분과 두 번째 시간의 시·분, 총 네 개의 매개변수를 전달받습니다.분 단위 변환: 시각 비교를 쉽게 하기 위해 각 시간을 '시 × 60 + 분' 공식으로 모두 분 단위로 변환합니다.
같은 시간 처리: 두 시간이 동일하면 "The times are the same"이라는 메시지를 출력하고 함수를 종료합니다.
차이 계산: 두 시간이 다르면 분 단위 값끼리 뺀 뒤, 결과를 60으로 나눈 몫과 나머지를 이용해 각각 시와 분으로 환산합니다. 여기서
% 24연산을 적용해 하루(24시간)를 기준으로 한 순환 차이도 올바르게 표현됩니다.함수 호출: 메인 실행부에서 서로 다른 시각 조합 세 가지를 인자로 넘기며 함수를 호출합니다.
결과 출력: 계산된 시간 차이가 콘솔에 '시 : 분' 형태로 출력됩니다.
이처럼 시간을 분 단위로 통일한 후 연산하면 복잡한 시·분 계산 로직 없이도 깔끔하게 시간 차이를 구할 수 있습니다. 초(second)까지 포함해야 한다면 같은 원리로 초 단위까지 변환하여 확장할 수 있습니다.