관리 메뉴

솜씨좋은장씨

[Python] datetime의 strptime을 활용하여 시간과 시간 사이의 차이 구하는 방법 본문

Programming/Python

[Python] datetime의 strptime을 활용하여 시간과 시간 사이의 차이 구하는 방법

솜씨좋은장씨 2022. 1. 19. 22:18
728x90
반응형

개발을 하다 보면 종종 특정 시간과 특정 시간 사이에 얼마나 많은 시간이 흘렀는지 구해야 할 경우가 있습니다.

직접 시간을 계산하는 코드를 작성해도 되지만 2시 39분 -> 5시 25분 까지 얼마나 걸렸어? 라고 계산을 한다고 했을때

1시간은 60초라는 것을 감안하면서 계산하기가 귀찮기도 합니다.

 

이를 조금 더 쉽게 계산하는 방법이 없을까! 하다가 찾은것이 바로 datetime의 strptime 을 활용하는 방법입니다.

👨🏻‍💻 datetime 의 strptime

strptime은 문자열로 되어있는 날짜 또는 시간을 datetime 객체로 바꾸어주는 함수입니다.

😎 사용 예시

* from datetime import datetime 으로 datetime을 import 한 뒤에 사용

문자열 strptime 결과
2시 30분 datetime.strptime("2시 30분", "%H시 %M분") datetime.datetime(1900, 1, 1, 2, 30)
2:30 datetime.strptime("2:30", "%H:%M") datetime.datetime(1900, 1, 1, 2, 30)
0001년 02월 03일 4시 56분 07초 datetime.strptime("0001년 02월 03일 4시 56분 07초", "%Y년 %m월 %d일 %H시 %M분 %S초") datetime.datetime(1, 2, 3, 4, 56, 7)
종류 strptime 에 적는 값
%Y
%m
%d
시간 %H
%M
%S

기본적으로 위의 값들을 조합하여 사용합니다.

👨🏻‍💻 strptime을 활용하여  시간과 시간 사이의 시간 계산하기

만약 문자열로 주어진 시간 "2시 30분"과 "5시 23분" 사이의 시간이 얼마인지를 구한다고 하면

from datetime import datetime

time1 = datetime.strptime("2시 30분", "%H시 %M분")
time2 = datetime.strptime("5시 23분", "%H시 %M분")

위와 같이 datetime의 strptime을 활용하여 datetime 객체로 바꾸어준 다음

elapsed_time = time2 - time1

더 뒤의 시간에서 앞의 시간을 빼줍니다.

datetime.timedelta(seconds=10380)

빼고 나면 elapsed_time의 값은 위와 같이 datetime의 timedelta 객체가 됩니다.

second = elapsed_time.seconds

여기서 아까 만든 timedelta 값에서 second ( 초 ) 정보만 빼오기 위해서는

.seconds 를 붙여 값을 빼면 됩니다.

def convert_second_to_hour_minute_second(second):
    hour = second // 3600
    minute = (second // 60) - (hour * 60)
    sec = second - (minute * 60) - (hour * 3600)
    
    return hour, minute, sec

해당 값을 시간 / 분 / 초로 바꾸는 것은 위의 함수를 활용하시면 됩니다.

 

읽어주셔서 감사합니다.

Comments