파이썬 날짜와 시간 datetime

파이썬 날짜 시간 출력

파이썬 datetime 모듈 선언

파이썬에서 날짜와 시간을 출력하는 데 있어서 datetime라이브러리를 사용합니다. datetime 모듈을 선언하는데 그냥 import 다음에 바로 datetime을 선언해도 되지만 특이하게 파이썬 datetime라이브러리의 하위 서브 모듈 이름도 datetime이 존재합니다. 그래서 "import datetime"으로만 선언을 하게 된다면 서브모듈의 datetime을 사용하기 위해서 datetime.datetime 이렇게 접근해야 합니다. 이러한 불편함을 조금이라도 줄이기 위해 모듈 import시 from절도 함께 사용합니다.

 

from datetime import datetime

 

이렇게 선언하게 되면 현재 날짜와 시간을 가져오는 today()함수를 datetime.datetime.today()가 아닌 datetime.today()로 datetime을 한 번만 사용해도 되는 이점이 생기게 됩니다. 필자의 경우 이 datetime도 줄여 at 구문을 함께 사용합니다.

 

from datetime import datetime as dt

 

as구문으로 인하여 datetime을 dt로 사용가능합니다. 그래서 today() 함수를 호출하는데 타이핑 수가 많이 줄어들게 됩니다.

 

from datetime import datetime as dt

dt.today()

# 결과
# datetime.datetime(2019, 9, 2, 16, 53, 19, 36189)

 

import datetime으로만 선언 했을 때에는 datetime.datetime.today()로 함수 호출을 해야 했는데 dt.today()로 함수 호출이 가능하여 타이핑 수가 많이 줄어드는 효과가 있습니다. 

 

파이썬 날짜 시간 포멧

dt.today() 함수를 호출하여 출력받은 값을 자세히 보면 일반적으로 사용하는 일자와 시간 포맷이 아닙니다. 특히나 코드를 짜고 제대로 수행을 하고 있는지 확인을 위해서 로그파일을 생성해야 하는데 이때 로그 작성 일자 및 시간을 출력하는데 이 포멧이 유용하게 사용될 수 있습니다. 흔히 일자와 시간을 표현하는 데 있어서 눈에 익숙한 포맷은 '-'로 구분된 년도 4자리 월 2자리 일 2자리 그리고 공백과 ":"으로 구분된 2자리 시, 2자리 분, 2자리 초 일 것입니다. ( yyyy-mm-dd HH:MM:SS ) 이 조건을 파이썬 코드로 작성한다면 다음과 같이 작성할 수 있습니다.

 

from datetime import datetime as dt

dt.today().strftime("%Y-%m-%d %H:%M:%S")

#결과
#'2019-09-02 17:07:50'

 

today() 함수 뒤에 strftime함수를 사용하여 포맷을 지정해 주면 됩니다. %로 나타내는 기호는 지시자라고 하며 연도의 경우 4자리를 표현하기 위해 대문자 Y를 사용했지만 소문자 y를 사용하면 연도에서 뒤의 2자리만 취하게 됩니다. 만약 성능을 테스트하는 경우 밀리 초까지 구분해야 하는 경우가 발생할 수 있습니다. 이럴 때 지시자 f를 사용하여 밀리초를 구할 수 있습니다.

 

from datetime import datetime as dt

dt.today().strftime("%y-%m-%d %H:%M:%S [%f]")

#결과
#'19-09-02 17:12:42 [303079]'

 

이밖에도 파이썬에서 정의한 지시자를 사용하면 입맛에 맞는 포맷으로 일자와 시간을 구할 수 있습니다.

 

파이썬 strftime 지시자

지시자 설 명
%Y

4자리 연도를 10진수로 출력

(예> 2019)

%y

2자리 년도를 10진수로 출력

(예> 19)

%m

월(month)을 0으로 채워진 2자리 10진수

(예> 01, 02, 03,..., 12)

%d

월의 일(day)를 0으로 채운 2 자릿수 일(day)

(예> 01, 02, 03,..., 31)

%a

요일을 축약하여 출력

(예> Sun, Mon...)

%A

요일을 전체 이름으로 출력

(예> Sunday, Monday...)

%w

일요일을 0으로 토요일을 6으로 하는 10진수 값 요일

(예> 0, 1,..., 6)

%b

월(month)을 축약하여 출력

(예> Jan, Feb,..., Dec)

%B

월(month)을 전체 이름으로 출력

(예> January, February,..., Desember)

%p

시간의 오전/오후를 출력

(예> AM, PM)

%H

24시간 시간제를 0으로 채워진 2자리 10진수

(예> 00, 01, 02,..., 23)

%I

12시간 시간제를 0으로 채워진 2자리 10진수

(예> 01, 02, 03,..., 12)

%M

시간의 분을 0으로 채워진 2자리 10진수

(예> 00, 01, 02,..., 59)

%S

시간의 초를 0으로 채워진 2자리 10진수

(예> 00, 01, 02, ..., 59)

%f

마이크로초를 왼쪽에서부터 0으로 채워지는 6자리 10진수

(예> 000000, 000001,..., 999999)

%j

연중 일 (day of the year)을 0으로 채워진 3자리 10진수

(예> 001, 002, 003,..., 366)

%U

연중 주 번호 (주의: 새해 첫 주는 0으로 간주 일요일이 시작 주의)

(예> 00, 01, 02,..., 53)

%W

연중 주 번호 (주의 : 새해 첫 주는 0으로 간주 월요일이 시작 주의)

(예> 00, 01, 02, ..., 53)

%c

적절한 날짜와 시간 표현

(예> Mon Sep  2 17:48:19 2019)

%x

적절한 날짜 표현

(예> 09/02/19)

%X

적절한 시간 표현

(예> 17:48:19)

%%

리터럴 "%" 문자 표시

%G

[python 3.6에서 추가]

ISO 8601에서 정의한 년도

(예> 0001, 0002, 2019,..., 9998, 9999)

%u

[python 3.6에서 추가]

ISO 8601에서 정의한 1을 월요일로 하는 10진수 요일

(예> 1, 2, 3,..., 7)

%V

[python 3.6에서 추가]

ISO 8601에서 정의한 1부터 시작하고 월요일을 주 시작 요일

(예> 01, 02, 03,..., 53)

 

MORE