[Python] strptime vs strftime

hyelimchoi1223·2021년 7월 9일
0

[Study] Python

목록 보기
16/16
post-thumbnail

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개의 댓글