-
[Python] Datetime 시간 객체 활용하기(문자열 변환, 증감, 대소비교)Programming 2021. 3. 24. 00:19
파이썬으로 프로그래밍을 하면 프로그래머스 류의 코딩테스트에서 종종 시간 관련 문제를 만날 수 있다.
시간을 처리하는 메소드를 직접 구현하기 보다는 Python의 Datetime 모듈을 활용하는 것이 더 효율적일 때가 많아서 정리해보려고 한다.
1. datetime 모듈의 datetime 클래스 포함하기
import datetime #ex) datetime.datetime.today() # >> datetime.datetime(2021, 3, 23, 22, 50, 49, 881617)
현재 날짜와 시간을 구할 때는 today 메소드를 사용한다. UTC 기준으로 구하는 방법도 있지만 설명은 생략한다.
2. 특정 날짜와 시간으로 객체 만들기
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0) d = datetime.datetime(2021, 3, 23)
datetime의 매개변수로 원하는 시간을 넣어 datetime 객체를 만들 수도 있다.
3. 문자열로 날짜/시간 객체 만들기
datetime.datetime.strptime('날짜문자열', '포맷') #ex) d = datetime.datetime.strptime('2021-03-23', '%Y-%m-%d') d2 = datetime.datetime.strptime('02:24:48', '%H:%M:%S')
strptime메소드를 사용하면 문자열 형태의 날짜를 datetime.datetime 객체로 변환할 수 있다. 이 때, 아래의 표를 이용해서 날짜/시간 포맷을 지정해줘야 한다(자주 쓸만한 것만 넣었다).
코드 설명 예 %A 요일 Sunday, Monday, ... , Saturday %d 일 01, 02, ... , 31 %B 월 January, February, ... , December %m 숫자 월 01, 02, ... , 12 %Y 네 자릿수 연도 0001, 0002, ... , 9999 %H 시간(24시) 00, 01, ... , 23 %M 분 00, 01, ... , 59 %S 초 00, 01, ... , 59 %j 1월 1일부터 경과한 일수 001, 002, ... , 366 %U 1년 중 주차, 월요일이 한 주의 시작 00, 01, ... , 53 %x 날짜 출력, 현재 시간대 기준 24/03/21 %X 시간 출력, 현재 시간대 기준 02:24:48 4. 날짜/시간 객체를 문자열로 만들기
datetime객체.strftime('포맷') # ex) d.strftime('%Y-%m-%d') # >> '2021-03-24' d.strftime('%X') # >> '00:04:24'
5. 날짜와 시간 속성에 접근하기
today = datetime.today() today.year, today.month, today.day, today.hour, today.minute, today.second, today.microsecond
연, 월, 일, 시, 분, 초, 마이크로 초 속성을 따로 가져올 수 있다.
6. 날짜와 시간 차이 계산하기
datetime.timedelta 를 이용해서 시간의 차이를 계산해낼 수 있다. 주로 두 datetime 객체의 날짜/시간 차이를 계산하거나 증감할 때 사용한다.
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) # ex) from datetime import timedelta d = datetime.datetime.strptime('09:09', '%H:%M') d - timedelta(minutes=40) # datetime.datetime(1900, 01, 01, 0, 8, 29)
위와 같이 datetime 객체에서 날짜/시간을 증감시킬 수 있고
datetime(2018, 5, 13) - datetime(2018, 4, 1) # datetime.timedelta(42)
두 datetime 객체에서도 시간의 차이를 도출해낼 수 있다.
7. datetime 객체 대소비교하기
d1 = datetime.datetime.strptime('09:40', '%H:%M') d2 = datetime.datetime.strptime('15:09', '%H:%M') print(d1<=d2) # True
단순히 >, <, == 연산자를 이용해서 두 datetime 객체의 대소를 비교할 수 있다.
8. datetime 객체 리스트 정렬하기
dList = [] #datetime 객체가 들어있다고 가정 dList = dList.sorted()
리스트를 정렬하는 것과 똑같이 sort를 해주면 오름차순으로 정렬된 datetime 객체 리스트를 얻을 수 있다.
***출처: dojang.io/mod/page/view.php?id=2463 ***
'Programming' 카테고리의 다른 글
Overriding(오버라이딩)과 Overloading(오버로딩) (1) 2021.08.16 Value와 Object, identity와 equality의 차이 (0) 2021.08.07