파이썬 - 시간 라이브러리 (datetime) 정리



 


Python - 시간 라이브러리 (datetime) 


1. 라이브러리 

from datetime import datetime 

import datetime 으로하면, 메서드를 사용할때 

datetime.datetime.now() 이렇게 써야하는 불편함이 있기에, from datetime 모부터 쓸것 



2. 함수 / 메서드 종류 

a = datetime.now()

a = datetime.today() 이렇게 선언했다고 했을때 아래 메서드를 이렇게 표현할 수 있다. 


메서드명출력 예시설명
a.now() a.today()2024-02-28 08:57:41.221849현재 날짜와 시간을 출력 * 여러값이 같이 출력되므로 함수() 형식
a.year2024현재 연도를 출력
a.month2현재 월을 출력
a.day28현재 일을 출력
a.weekday()2요일을 출력 (0이 월요일)
a.isoweekday()3ISO 규격에 따른 요일을 출력 (1이 월요일)
a.date()2024-02-28날짜를 출력 *함수()
a.time()08:57:41.221849시간을 출력 *함수()
a.hour8현재 시간의 시를 출력
a.minute57현재 시간의 분을 출력
a.second41현재 시간의 초를 출력

3. now()와 today() 차이점

datetime.now(), datetime.today() 둘다 정말 똑.같.은 값을 리턴한다. 

하나의 차이점은 now()는 매개변수로 국가별 타임시간대를 출력할 수 있다는 것이다. 

기본값은 today와 동일하게 현재 있는 지역의 시간대, 날짜를 리턴함


* datetime 모듈의 메서드 및 함수 주의할 점 

1) 괄호 

여러 함수, 메서드들이 있다. 이 중에서 어떤것이 괄호를 입력하는 건지 헷갈렸다. 

now(), today(), date(), time(), weekday(), isoweekday() 중에서 주말을 표현하는 마지막 2개를 제외하고 나머지는 년월일, 시분초처럼 여러값을 한번에 출력하는 함수이다. 

여러값을 뽑을땐 괄호를 붙이고, 년 / 월 / 일 / 시 / 분 / 초 처럼 하나의 값을 뽑을땐 괄호 제외! 


2) 주말

weekday(), isoweekday() 두개의 함수가 존재한다. 

weekday()는 월요일을 0으로 시작하고 

isoweekday()는 일요일이 0인 점이 다르다. 




3. strftime vs strptime 

a.strftime(strf + time) : 날짜와 시간(datetime)을 문자열로 출력

a.strptime(strp + time) : 날짜와 시간 형식의 문자열을 datetime으로 변환


1) strftime : datetime을 문자열로 변환함 

a = datetime.today()
print(a)
# 2024-02-28 09:29:38.443488

print(a.strftime('%Y.  %m.  %d.'))  #대문자 M은 minute / 소문자 m은 month
# 2024.  02.  28.

print(a.strftime('%H : %M : %S '))
# 09 : 29 : 38 

print(a.strftime('%Y년  %m월  %d일,  %H시  %M분  %S초 '))
# 2024년  02월  28일,  09시  29분  38초 

print(f"지금의 시간은 {a.strftime('%H : %M : %S ')} 입니다")
#지금의 시간은 09 : 35 : 10  입니다

strftime을 쓰면, 문자열 중간에 년월일, 시분초를 넣을 수 있다. 

하지만, 이 기능은 위에서 정리한 메서드 및 함수를 써서도 가능함


포맷 지정자설명
%Y 네 자리 수의 연도 (예: 2019, 2020, 2021)
%y 두 자리 수의 연도 (예: 19, 20, 21)
%D %m/%d/%y와 동일
%m 0을 채운 두 자리 수의 월 (예: 01, 02, ..., 11, 12)
%d 0을 채운 두 자리 수의 일 (예: 01, 02, ..., 30, 31)
%I0을 채운 12시간제의 시간 (예: 01, 02, ..., 12)
%H 0을 채운 24시간제의 시간 (예: 00, 01, ..., 23)
%h 0을 채운 12시간제의 시간 (예: 00, 01, ..., 12)
%M 0을 채운 두 자리 수의 분 (예: 00, 01, ..., 58, 59)
%S0을 채운 두 자리 수의 초 (예: 00, 01, ..., 58, 59)

* 대소문자 주의



2) strptime : 날짜와 시간 형식의 문자열을 datetime으로 변환

d = '2022-03-03'
cur = datetime.strptime(d, '%Y-%m-%d')
# 2022-03-03 00:00:00

d = '2022, 03, 03'
cur = datetime.strptime(d, '%Y, %m, %d')
# 2022-03-03 00:00:00

d = '2022, 03, 03. 2:30:32'
cur = datetime.strptime(d, '%Y, %m, %d. %H:%M:%S')
# 2022-03-03 02:30:32i


strptime 은 단순히 문자열로 입력받은 날짜나 시간을 datetime 타입으로 변환하는 것 ! 

type(d)는 문자열인데 strptime 을 거치면, type(cur) 했을때 datetime 타입이 된다. 


이 함수를 쓸때는 형식이랑 %대소문자를 잘 지켜야한다. 

아래는 오류나는 경우를 적어봄

d = '2022, 03, 03'
cur = datetime.strptime(d, '%y, %m, %d') #오류남. %Y 형식이어야함
cur = datetime.strptime(d, '%Y-%m-%d')   #오류남. 연결이 동일해야함



4. 미래의 시간 

later = datetime.today()+ timedelta(5)

5일 뒤의 시간이 리턴됨 




댓글

이 블로그의 인기 게시물

KT 에이블스쿨 : 대구광역시 공공데이터 활용 창업경진대회 준비

[KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

KT 에이블스쿨 : 핀테크 아이디어 공모전