Python에서 형식화된 날짜와 시간 얻기
Python에서 날짜와 시간을 원하는 형식으로 출력하고 싶다면 strftime() 함수를 사용하면 됩니다. 이 함수는 포맷 문자열(format string)을 인수로 받아, 지정한 형식에 맞춘 결과를 문자열로 반환합니다.
아래 표는 strftime() 함수에서 사용할 수 있는 주요 포맷 코드(directive)와 각 코드의 의미입니다.
strftime() 포맷 코드 정리
| 포맷 코드 | 의미 |
| %a | 지역 설정(locale) 기준 요일의 축약형 이름 (예: Mon, Tue) |
| %A | 지역 설정 기준 요일의 전체 이름 (예: Monday) |
| %b | 지역 설정 기준 월의 축약형 이름 (예: Jan) |
| %B | 지역 설정 기준 월의 전체 이름 (예: January) |
| %c | 지역 설정에 맞는 날짜와 시간 전체 표현 |
| %d | 일(day), 10진수 표현 [01~31] |
| %H | 시(hour), 24시간제 10진수 표현 [00~23] |
| %I | 시(hour), 12시간제 10진수 표현 [01~12] |
| %m | 월(month), 10진수 표현 [01~12] |
| %M | 분(minute), 10진수 표현 [00~59] |
| %p | 오전/오후 표시 (AM 또는 PM) |
| %S | 초(second), 10진수 표현 [00~61] |
| %U | 연중 몇 번째 주인지 나타내는 숫자(일요일을 한 주의 시작으로 간주) [00~53]. 새해 첫 일요일 이전의 날들은 모두 0번째 주로 계산됩니다. |
| %w | 요일을 숫자로 표현 [0(일요일)~6(토요일)] |
| %W | 연중 몇 번째 주인지 나타내는 숫자(월요일을 한 주의 시작으로 간주) [00~53]. 새해 첫 월요일 이전의 날들은 모두 0번째 주로 계산됩니다. |
| %x | 지역 설정에 맞는 날짜 표현 |
| %X | 지역 설정에 맞는 시간 표현 |
| %y | 세기를 제외한 연도, 10진수 표현 [00~99] |
| %Y | 세기를 포함한 연도, 10진수 표현 (예: 2024) |
| %Z | 시간대(time zone) 이름 (시간대 정보가 없으면 빈 문자열) |
| %% | 문자 '%' 자체를 그대로 출력 |
사용 예제
위 포맷 코드들을 조합하면 다양한 형태로 날짜와 시간을 출력할 수 있습니다. 아래 예제를 살펴보겠습니다.
import datetime
now = datetime.datetime.now()
print("현재 날짜 및 시간:")
print(now.strftime('%Y-%m-%d %H:%M:%S'))
print(now.strftime('%H:%M:%S on %A, %B the %dth, %Y'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
2017-12-29 12:19:13
12:19:13 on Friday, December the 29th, 2017코드 설명
%Y-%m-%d %H:%M:%S— '2024-01-15 14:30:00'처럼 프로그래밍과 데이터 처리에 널리 쓰이는 표준적인 형식입니다.%A, %B the %dth, %Y— 'Friday, December the 29th, 2017'처럼 사람이 읽기 좋은 영어 문장 형태의 날짜를 만들 수 있습니다.
이처럼 strftime()의 포맷 코드를 자유롭게 조합하면 로그 파일명, 보고서 제목, UI 표시 등 어떤 용도든 원하는 날짜·시간 형식을 손쉽게 만들 수 있습니다.