date, datetime, time 객체를 주어진 포맷에 따라 문자열로 변환한다.
(date, datetime, time 객체에 모두 지원한다는게 Point!)
.strftime(format)
from datetime import date, datetime, time
current_date = date.today()
current_datetime = datetime.today()
current_time = time(10, 20, 10)
print("<<date에서 strftime 사용>>")
print(
f"before: {current_date} \nafter: {current_date.strftime('%Y.%m.%d %H-%M-%S')}")
print("=====")
# <<date에서 strftime 사용>>
# before: 2021-07-09
# after: 2021.07.09 00-00-00
# =====
print("<<datetime에서 strftime 사용>>")
print(
f"before: {current_datetime} \nafter: {current_datetime.strftime('%Y.%m.%d %H-%M-%S')}")
print("=====")
# <<datetime에서 strftime 사용>>
# before: 2021-07-09 16:11:40.745279
# after: 2021.07.09 16-11-40
# =====
print("<<time에서 strftime 사용>>")
print(
f"before: {current_time} \nafter: {current_time.strftime('%H-%M-%S')}")
# <<time에서 strftime 사용>>
# before: 10:20:10
# after: 10-20-10
주어진 포맷으로 문자열을 datetime 객체로 분석해 반환
datetime에서만 사용가능하다.
datetime.strptime(date_string, format)
date_string
과 format
의 포맷이 동일해야 한다.
from datetime import datetime
strptime_ex = datetime.strptime('2021-07-06 10:20:11', '%Y-%m-%d %H:%M:%S')
print(strptime_ex)
# 2021-07-06 10:20:11
print(type(strptime_ex))
# <class 'datetime.datetime'>
# error code
strptime_err = datetime.strptime('2021:07:06 10-20-11', '%Y-%m-%d %H:%M:%S')
# ValueError: time data '2021:07:06 10-20-11' does not match format '%Y-%m-%d %H:%M:%S'
💡 더 다양한 포맷코드는 공식 문서에 잘 정리되어 있다.
https://docs.python.org/ko/3/library/datetime.html#strftime-strptime-behavior
%a
: 요일을 축약해서 표현Mon
, Tue
,...%A
: 요일을 전체 이름으로 표현Monday
, Tuesday
,...%d
: '일'을 10진수로 0을 채워서 표현%b
: 월 이름을 축약해서 표현Jan
, Feb
,...%B
: 월 이름을 전체 이름으로 표현January
, February
, ...%m
: '월'을 10진수로 0을 채워서 표현%y
: '년'을 10진수로 2자리로 표현%Y
: '년'을 10진수로 4자리로 표현%H
: '시'를 24시간제로 표현%I
: '시'를 12시간제로 표현%P
: 오전, 오후를 표시%M
: '분'을 10진수로 채워서 표현%S
: '초'을 10진수로 채워서 표현%f
: '마이크로초'를 0으로 채워진 십진수로(사실 더 많지만 자주 쓰일 것 같은 포맷들만 모아보았다.)
from datetime import datetime
today = datetime.today()
print(today.strftime('%Y-%m-%d'))
# 2021-07-09
print(today.strftime('%y-%m-%d'))
# 21-07-09
print(today.strftime('%m,%d,%B %A'))
# 07,09,July Friday
print(today.strftime('%m,%d,%b %a'))
# 07,09,Jul Fri
print(today.strftime('%y-%m-%d %H:%M:%S'))
# 21-07-09 16:34:44
print(today.strftime('%y-%m-%d %H:%M:%S.%f'))
# 21-07-09 16:36:06.883485
print(today.strftime('%y-%m-%d %I:%M:%S %p'))
# 21-07-09 04:34:44 PM