파이썬 - 시간 라이브러리 (datetime) 정리
Python - 시간 라이브러리 (datetime)
1. 라이브러리
from datetime import datetime
import datetime 으로하면, 메서드를 사용할때
datetime.datetime.now() 이렇게 써야하는 불편함이 있기에, from datetime 모부터 쓸것
2. 함수 / 메서드 종류
a = datetime.today() 이렇게 선언했다고 했을때 아래 메서드를 이렇게 표현할 수 있다.
메서드명 | 출력 예시 | 설명 |
---|---|---|
a.now()
a.today() | 2024-02-28 08:57:41.221849 | 현재 날짜와 시간을 출력 * 여러값이 같이 출력되므로 함수() 형식 |
a.year | 2024 | 현재 연도를 출력 |
a.month | 2 | 현재 월을 출력 |
a.day | 28 | 현재 일을 출력 |
a.weekday() | 2 | 요일을 출력 (0이 월요일) |
a.isoweekday() | 3 | ISO 규격에 따른 요일을 출력 (1이 월요일) |
a.date() | 2024-02-28 | 날짜를 출력 *함수() |
a.time() | 08:57:41.221849 | 시간을 출력 *함수() |
a.hour | 8 | 현재 시간의 시를 출력 |
a.minute | 57 | 현재 시간의 분을 출력 |
a.second | 41 | 현재 시간의 초를 출력 |
3. now()와 today() 차이점
하나의 차이점은 now()는 매개변수로 국가별 타임시간대를 출력할 수 있다는 것이다.
기본값은 today와 동일하게 현재 있는 지역의 시간대, 날짜를 리턴함
* datetime 모듈의 메서드 및 함수 주의할 점
여러 함수, 메서드들이 있다. 이 중에서 어떤것이 괄호를 입력하는 건지 헷갈렸다.
now(), today(), date(), time(), weekday(), isoweekday() 중에서 주말을 표현하는 마지막 2개를 제외하고 나머지는 년월일, 시분초처럼 여러값을 한번에 출력하는 함수이다.
여러값을 뽑을땐 괄호를 붙이고, 년 / 월 / 일 / 시 / 분 / 초 처럼 하나의 값을 뽑을땐 괄호 제외!
2) 주말
weekday(), isoweekday() 두개의 함수가 존재한다.
weekday()는 월요일을 0으로 시작하고
isoweekday()는 일요일이 0인 점이 다르다.
3. strftime vs strptime
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) |
%I | 0을 채운 12시간제의 시간 (예: 01, 02, ..., 12) |
%H | 0을 채운 24시간제의 시간 (예: 00, 01, ..., 23) |
%h | 0을 채운 12시간제의 시간 (예: 00, 01, ..., 12) |
%M | 0을 채운 두 자리 수의 분 (예: 00, 01, ..., 58, 59) |
%S | 0을 채운 두 자리 수의 초 (예: 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일 뒤의 시간이 리턴됨
댓글
댓글 쓰기