strptime vs strftime

strftime

date, datetime, time 객체를 주어진 포맷에 따라 문자열로 변환한다.
(date, datetime, time 객체에 모두 지원한다는게 Point!)

사용법
.strftime(format)
example
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

strptime

주어진 포맷으로 문자열을 datetime 객체로 분석해 반환
datetime에서만 사용가능하다.

사용법
datetime.strptime(date_string, format)
⚠️ strptime 사용할 때 주의할 점

date_stringformat 의 포맷이 동일해야 한다.

example
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'

strftime과 strptime의 포맷코드

💡 더 다양한 포맷코드는 공식 문서에 잘 정리되어 있다.
https://docs.python.org/ko/3/library/datetime.html#strftime-strptime-behavior

  • %a : 요일을 축약해서 표현
    ex) Mon, Tue,...
  • %A : 요일을 전체 이름으로 표현
    ex) Monday, Tuesday,...
  • %d : '일'을 10진수로 0을 채워서 표현
    ex) 01, 02,...
  • %b : 월 이름을 축약해서 표현
    ex) Jan, Feb,...
  • %B : 월 이름을 전체 이름으로 표현
    ex) January, February, ...
  • %m : '월'을 10진수로 0을 채워서 표현
    ex) 01, 02,...12
  • %y : '년'을 10진수로 2자리로 표현
    ex) 01, 02,...99
  • %Y : '년'을 10진수로 4자리로 표현
    ex) 2020,2021,...
  • %H : '시'를 24시간제로 표현
    ex) 00, 01, 02,...23
  • %I : '시'를 12시간제로 표현
    ex) 01, 02,...12
  • %P : 오전, 오후를 표시
    ex) AM, PM
  • %M : '분'을 10진수로 채워서 표현
    ex) 00, 01, 02,...59
  • %S : '초'을 10진수로 채워서 표현
    ex) 00, 01, 02,...59
  • %f : '마이크로초'를 0으로 채워진 십진수로
    ex) 000000, 000001, ...., 999999

(사실 더 많지만 자주 쓰일 것 같은 포맷들만 모아보았다.)

example
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

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN