Python 표준 라이브러리 - datetime 모듈
👆이미지출처 ajaytech
datetime 모듈
데이터를 조작할 때, 분석할 때, 웹 애플리케이션등 정말 많은 분야에 정말 많이 사용되는 모듈이다…⭐️x100
- datetime 모듈은 날짜와 시간을 다루기 위한 클래스와 함수를 제공한다.
- time 모듈은 시간만을 단독으로 사용하는 반면 datetime 모듈은 날짜와 시간을 함께 다룰 때 주로 사용한다.
1. ‘datetime.date’ Class
- 날짜를 표현하는 클래스.
- 날짜 관련 정보를 다루는 데 필수적.
- 날짜계산, 비교, 포맷팅 등 다양한 작업에 사용된다.
- 글로 표현하는 것 보다 코드로 이해하는게 빠르다. 아래에 예시를 참고하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from datetime import date
# 날짜 생성
d = date(2024, 1, 1) # 날짜 생성 2024년 1월 1일
# 날짜 얻기
today = date.today() # today 메서드를 사용해 현재 날짜 얻기
# 'year','month','day' 속성을 통해 각각 연,월,일 정보에 접근
year = d.year # 연도
month = d.month # 월
day = d.day # 일
# 날짜 포멧팅
date_str = d.strftime("%Y-%m-%d") # '2024-01-01'
# 날짜 연산
from datetime import timedelta
tomorrow = d + timedelta(days=1) # 하루 후
yesterday = d - timedelta(days=1) # 하루 전
# 날짜 비교
is_today = d == date.today() # 오늘 날짜인지 확인
2. ‘datetime.time’ Class
- 시간을 다루는 데 사용되는 클래스.
- 시, 분, 초, 마이크로초와 같이 시간 정보를 다룰 때 사용한다. (날짜는 포함x)
- 글로 표현하는 것 보다 코드로 이해하는게 빠르다. 아래에 예시를 참고하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from datetime import time
t = time(12, 30, 45, 123456) # 12시 30분 45초 123456마이크로초
# 속성 접근
hour = t.hour # 시
minute = t.minute # 분
second = t.second # 초
microsecond = t.microsecond # 마이크로초
# 시간 포멧팅
time_str = t.strftime("%H:%M:%S.%f") # '12:30:45.123456'
# 시간 비교
is_noon = t == time(12, 0) # 정오인지 확인
# 자정(00:00:00.00)을 나타내는 객체 생성
# time()을 인자 없이 호출하면 자정을 나타내는 객체가 생성된다.
midnight = time() # 자정
3. ‘datetime.datetime’ Class
- 날짜와 시간을 함께 다루는 데 사용된다.
- ‘datetime.date’, ‘datetime.time’의 기능을 모두 포함하며, 날짜와 시간 관련 작업에 가장!! 많이 사용되는 클래스이다.
- 글로 표현하는 것 보다 코드로 이해하는게 빠르다. 아래에 예시를 참고하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from datetime import datetime
# 날짜와 시간 생성
dt = datetime(2024, 1, 1, 12, 30, 45, 123456) # 2024년 1월 1일 12시 30분 45초 123456마이크로초
# 날짜와 시간 얻기
now = datetime.now() # 현재 날짜와 시간
# 속성 접근
year = dt.year
month = dt.month
day = dt.day
hour = dt.hour
minute = dt.minute
second = dt.second
microsecond = dt.microsecond
# 날짜와 시간 포멧팅
dt_str = dt.strftime("%Y-%m-%d %H:%M:%S.%f")
# 날짜와 시간 연산
from datetime import timedelta
tomorrow = dt + timedelta(days=1)
yesterday = dt - timedelta(days=1)
# 날짜와 시간 비교
is_past = dt < datetime.now()
# 문자열 파싱으로 날짜와 시간 생성
dt_from_str = datetime.strptime("2023-01-01 12:30", "%Y-%m-%d %H:%M")
4. ‘datetime.timedelta’ Class
- timedelta 클래스는 두개 날짜, 두개 시간 사이의 차이(기간)를 표현하는 데 사용된다.
- 정말 헷갈리고 암산하기 힘든 날짜계산, 시간계산에 사용하는 데 개꿀이다.
- 글로 표현하는 것 보다 코드로 이해하는게 빠르다. 아래에 예시를 참고하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from datetime import timedelta
# 1일 차이
one_day = timedelta(days=1)
# 1시간 30분 차이
one_hour_thirty_minutes = timedelta(hours=1, minutes=30)
# 날짜와 시간 연산
# 현재 시간
now = datetime.now()
# 1일 후
tomorrow = now + one_day
# 1시간 30분 전
one_hour_thirty_minutes_ago = now - one_hour_thirty_minutes
# 기간 비교
is_longer = one_hour_thirty_minutes > one_day # False
# 기간의 총 시간 계산
total_seconds = one_hour_thirty_minutes.total_seconds() # 5400.0 초
# 속성 접근
days = one_day.days # 1
seconds = one_hour_thirty_minutes.seconds # 5400
한줄평
- 오늘 공부한 내용은 정말 자주 사용하고 있으면서도 검색하고 찾느라 번거로운 내용이였는데.. 정리를 싹 해 놓으니 속이 다 후련하네.🌚
This post is licensed under CC BY 4.0 by the author.
