Python에서 현재 시간의 분, 초, 밀리초를 확인하려면 datetime.now()와 strftime() 함수를 함께 사용하는 것이 가장 간단한 방법입니다. strftime()은 포맷 문자열을 인자로 받아 원하는 형식의 날짜·시간 문자열을 반환해 줍니다.
strftime() 주요 포맷 지시자
아래 표는 strftime()에서 사용할 수 있는 주요 지시자와 그 의미를 정리한 것입니다.
| 지시자 | 의미 |
|---|---|
| %a | 로케일(locale)의 요일 이름 축약형 (예: Mon) |
| %A | 로케일의 요일 전체 이름 (예: Monday) |
| %b | 로케일의 월 이름 축약형 (예: Jan) |
| %B | 로케일의 월 전체 이름 (예: January) |
| %c | 로케일에 맞는 날짜 및 시간 표현 |
| %d | 일(day)을 10진수로 표현 [01~31] |
| %f | 마이크로초를 10진수로 표현 [000000~999999] |
| %H | 시간(24시간제)을 10진수로 표현 [00~23] |
| %I | 시간(12시간제)을 10진수로 표현 [01~12] |
| %j | 연중 몇 번째 날인지 10진수로 표현 [001~366] |
| %m | 월을 10진수로 표현 [01~12] |
| %M | 분을 10진수로 표현 [00~59] |
| %p | 로케일에 따른 AM/PM 표현 |
| %S | 초를 10진수로 표현 [00~61] |
| %U | 연중 몇 번째 주인지 표현(일요일을 한 주의 시작으로 간주) [00~53]. 새해 첫 일요일 이전의 날은 0주로 계산됩니다. |
| %w | 요일을 10진수로 표현 [0(일요일)~6] |
| %W | 연중 몇 번째 주인지 표현(월요일을 한 주의 시작으로 간주) [00~53]. 새해 첫 월요일 이전의 날은 0주로 계산됩니다. |
| %x | 로케일에 맞는 날짜 표현 |
| %X | 로케일에 맞는 시간 표현 |
| %y | 세기를 제외한 연도를 10진수로 표현 [00~99] |
| %Y | 세기를 포함한 연도를 10진수로 표현 |
| %Z | 시간대(time zone) 이름 (시간대가 없으면 빈 문자열) |
| %% | '%' 문자 자체 |
사용 예제
분, 초, 밀리초를 '분:초.마이크로초' 형식으로 출력하려면 지시자를 아래와 같이 조합하면 됩니다.
from datetime import datetime
curr_time = datetime.now()
formatted_time = curr_time.strftime('%M:%S.%f')
print(formatted_time)
실행 결과
31:15.093393
여기서 %M은 분, %S는 초, %f는 마이크로초(소수점 이하 6자리 숫자)를 의미합니다.
밀리초만 추출하는 방법
%f는 6자리 마이크로초를 반환하므로, 밀리초 단위(3자리)만 필요하다면 슬라이싱으로 앞 세 자리만 가져오면 됩니다.
from datetime import datetime
curr_time = datetime.now()
# 밀리초(앞 3자리)만 추출
milliseconds = curr_time.strftime('%f')[:3]
print(curr_time.minute, '분', curr_time.second, '초', milliseconds, '밀리초')
또는 curr_time.microsecond // 1000처럼 정수 나눗셈을 이용해 밀리초 값을 직접 구할 수도 있습니다.