Python strftime() 마스터하기: 날짜와 시간을 읽기 쉬운 문자열로 변환
Python strftime()
이 글에서는 예제와 함께 날짜, 시간, datetime 객체를 해당하는 문자열로 변환하는 방법을 배웁니다.
동영상: Python에서 날짜와 시간 다루기
strftime() 메서드는 날짜, 시간 또는 datetime 객체를 사용하여 날짜와 시간을 나타내는 문자열을 반환합니다.
예제 1: strftime()을 사용하여 datetime을 문자열로 변환
아래 프로그램은 현재 날짜와 시간을 포함하는 datetime 객체를 다양한 문자열 형식으로 변환합니다.
from datetime import datetime
now = datetime.now() # 현재 날짜와 시간
year = now.strftime("%Y")
print("년도:", year)
month = now.strftime("%m")
print("월:", month)
day = now.strftime("%d")
print("일:", day)
time = now.strftime("%H:%M:%S")
print("시간:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("날짜와 시간:", date_time)
프로그램을 실행하면 출력은 다음과 유사합니다:
년도: 2018
월: 12
일: 24
시간: 04:59:31
날짜와 시간: 12/24/2018, 04:59:31
여기서 year, day, time, date_time은 문자열인 반면, now는 datetime 객체입니다.
strftime() 작동 원리
위 프로그램에서 %Y, %m, %d 등은 형식 코드입니다. strftime() 메서드는 하나 이상의 형식 코드를 인수로 받아 이를 기반으로 포맷된 문자열을 반환합니다.
datetime 모듈에서 datetime 클래스를 임포트했습니다. datetime 클래스의 객체가 strftime() 메서드에 접근할 수 있기 때문입니다.
- 현재 날짜와 시간을 포함하는
datetime 객체가 now 변수에 저장됩니다.
strftime() 메서드를 사용하여 포맷된 문자열을 생성할 수 있습니다.
strftime() 메서드에 전달하는 문자열에는 하나 이상의 형식 코드가 포함될 수 있습니다.
예제 2: 타임스탬프에서 문자열 생성
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("날짜 시간 객체:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("출력 2:", d)
d = date_time.strftime("%d %b, %Y")
print("출력 3:", d)
d = date_time.strftime("%d %B, %Y")
print("출력 4:", d)
d = date_time.strftime("%I%p")
print("출력 5:", d)
프로그램을 실행하면 출력은 다음과 같습니다:
날짜 시간 객체: 2018-06-12 09:55:22
출력 2: 06/12/2018, 09:55:22
출력 3: 12 Jun, 2018
출력 4: 12 June, 2018
출력 5: 09AM
형식 코드 목록
아래 표는 strftime() 메서드에 전달할 수 있는 모든 코드를 보여줍니다.
| 지시자 | 의미 | 예시 |
%a | 줄임 요일 이름 | Sun, Mon, ... |
%A | 전체 요일 이름 | Sunday, Monday, ... |
%w | 요일(십진수, 0=일요일) | 0, 1, ..., 6 |
%d | 월별 일(제로 패딩) | 01, 02, ..., 31 |
%-d | 월별 일(패딩 없음) | 1, 2, ..., 30 |
%b | 줄임 월 이름 | Jan, Feb, ..., Dec |
%B | 전체 월 이름 | January, February, ... |
%m | 월(제로 패딩) | 01, 02, ..., 12 |
%-m | 월(패딩 없음) | 1, 2, ..., 12 |
%y | 세기 없는 연도(제로 패딩) | 00, 01, ..., 99 |
%-y | 세기 없는 연도(패딩 없음) | 0, 1, ..., 99 |
%Y | 세기 포함 연도 | 2013, 2019 등 |
%H | 시간(24시간제, 제로 패딩) | 00, 01, ..., 23 |
%-H | 시간(24시간제, 패딩 없음) | 0, 1, ..., 23 |
%I | 시간(12시간제, 제로 패딩) | 01, 02, ..., 12 |
%-I | 시간(12시간제, 패딩 없음) | 1, 2, ... 12 |
%p | 로케일의 AM/PM | AM, PM |
%M | 분(제로 패딩) | 00, 01, ..., 59 |
%-M | 분(패딩 없음) | 0, 1, ..., 59 |
%S | 초(제로 패딩) | 00, 01, ..., 59 |
%-S | 초(패딩 없음) | 0, 1, ..., 59 |
%f | 마이크로초(좌측 제로 패딩) | 000000 - 999999 |
%z | UTC 오프셋(+HHMM 또는 -HHMM) | |
%Z | 시간대 이름 | |
%j | 연중 일(제로 패딩) | 001, 002, ..., 366 |
%-j | 연중 일(패딩 없음) | 1, 2, ..., 366 |
%U | 주 번호(일요일 기준) | 00, 01, ..., 53 |
%W | 주 번호(월요일 기준) | 00, 01, ..., 53 |
%c | 로케일의 적절한 날짜/시간 표현 | Mon Sep 30 07:06:05 2013 |
%x | 로케일의 적절한 날짜 표현 | 09/30/13 |
%X | 로케일의 적절한 시간 표현 | 07:06:05 |
%% | 리터럴 '%' 문자 | % |
예제 3: 로케일의 적절한 날짜와 시간
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("출력 1:", d)
d = date_time.strftime("%x")
print("출력 2:", d)
d = date_time.strftime("%X")
print("출력 3:", d)
프로그램을 실행하면 출력은 다음과 같습니다:
출력 1: Tue Jun 12 09:55:22 2018
출력 2: 06/12/18
출력 3: 09:55:22
형식 코드 %c, %x, %X는 로케일의 적절한 날짜와 시간 표현에 사용됩니다.
또한 Python strptime()도 확인해 보시기 바랍니다. strptime() 메서드는 문자열로부터 datetime 객체를 생성합니다.