Python에서 현재 날짜와 시간을 얻는 방법은 여러 가지가 있습니다. 그중 가장 간단하고 널리 사용되는 방법은 표준 라이브러리인 datetime 모듈을 활용하는 것입니다. datetime 모듈의 now() 함수를 호출하면 현재 날짜와 시간을 손쉽게 확인할 수 있습니다.
기본 사용 예제
import datetime
now = datetime.datetime.now()
print("현재 날짜와 시간: ")
print(str(now))실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
2017-12-29 11:24:48.042720
strftime으로 날짜·시간 형식 지정하기
원하는 형식으로 날짜와 시간을 표현하고 싶다면 strftime() 함수를 사용하면 됩니다. 이 함수는 포맷 문자열(format string)을 인자로 받아, 해당 형식에 맞게 변환된 문자열을 반환합니다. 아래 표는 strftime에서 사용할 수 있는 주요 포맷 지시자(directive) 목록입니다.
| 지시자 | 의미 |
| %a | 요일의 축약형 이름 (예: Mon, Tue) |
| %A | 요일의 전체 이름 (예: Monday, Tuesday) |
| %b | 월의 축약형 이름 (예: Jan, Feb) |
| %B | 월의 전체 이름 (예: January, February) |
| %c | 해당 로케일에 적합한 날짜 및 시간 표현 |
| %d | 일(day)을 십진수로 표현 [01~31] |
| %H | 시간(24시간제)을 십진수로 표현 [00~23] |
| %I | 시간(12시간제)을 십진수로 표현 [01~12] |
| %j | 연중 몇 번째 날인지를 십진수로 표현 [001~366] |
| %m | 월을 십진수로 표현 [01~12] |
| %M | 분을 십진수로 표현 [00~59] |
| %p | AM 또는 PM에 해당하는 로케일 표현 |
| %S | 초를 십진수로 표현 [00~61] |
| %U | 연중 몇 번째 주인지를 십진수로 표현 [00~53] (일요일이 한 주의 시작). 새해 첫 일요일 이전의 날들은 0주차로 간주됩니다. |
| %w | 요일을 십진수로 표현 [0(일요일)~6] |
| %W | 연중 몇 번째 주인지를 십진수로 표현 [00~53] (월요일이 한 주의 시작). 새해 첫 월요일 이전의 날들은 0주차로 간주됩니다. |
| %x | 해당 로케일에 적합한 날짜 표현 |
| %X | 해당 로케일에 적합한 시간 표현 |
| %y | 세기를 제외한 연도를 십진수로 표현 [00~99] |
| %Y | 세기를 포함한 연도를 십진수로 표현 (예: 2017) |
| %Z | 시간대(time zone) 이름 (시간대 정보가 없으면 빈 문자열) |
| %% | 문자 '%' 자체를 표현 |
strftime 활용 예제
위에서 소개한 지시자들을 strftime 함수에 조합하여 사용하면 다음과 같습니다.
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
이처럼 Python의 datetime 모듈과 strftime 함수를 활용하면 현재 날짜와 시간을 다양한 형식으로 자유롭게 출력할 수 있습니다. 로그 기록, 파일명 생성, 사용자 인터페이스 표시 등 실무에서 매우 유용하게 활용되니 위 지시자들을 익혀두면 큰 도움이 됩니다.