9.1 날짜와 시간 다루기
프로그래머들은 종종 프로그램에서 날짜와 시간을 다루어야 해. 그래서 Python에는 이런 경우를 위한 두 개의 표준 라이브러리 datetime
과 time
이 있어.
datetime
라이브러리는 Python의 표준 라이브러리의 일부이며 날짜와 시간 작업을 위한 클래스를 제공해. 날짜와 시간을 생성하고, 조작하고, 포맷할 수 있으며, 그들과 함께 산술 연산을 수행할 수도 있어.
datetime
라이브러리의 주요 클래스들
datetime.date
클래스
이 클래스는 시간 없이 날짜(연도, 월, 일)를 나타내. 달력 날짜를 다루는 데 유용해.
사용 예시:
import datetime
# 날짜 객체 생성
d = datetime.date(2023, 5, 24)
print(d) # 출력: 2023-05-24
# 현재 날짜 얻기
today = datetime.date.today()
print(today)
# 연도, 월, 일 속성 접근
print(d.year) # 출력: 2023
print(d.month) # 출력: 5
print(d.day) # 출력: 24
datetime.time
클래스
이 클래스는 날짜 없이 시간(시, 분, 초, 마이크로초)을 나타내. 하루 중 시간을 다루는 데 유용해.
사용 예시:
import datetime
# 시간 객체 생성
t = datetime.time(14, 30, 45)
print(t) # 출력: 14:30:45
# 시, 분, 초 속성 접근
print(t.hour) # 출력: 14
print(t.minute) # 출력: 30
print(t.second) # 출력: 45
datetime.datetime
클래스
이 클래스는 날짜와 시간(연도, 월, 일, 시, 분, 초, 마이크로초)을 결합해. 특정 시점을 다루는 데 유용해.
사용 예시:
import datetime
# 날짜와 시간 객체 생성
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # 출력: 2023-05-24 14:30:45
# 현재 날짜와 시간 얻기
now = datetime.datetime.now()
print(now)
# 날짜와 시간 속성 접근
print(dt.year) # 출력: 2023
print(dt.month) # 출력: 5
print(dt.day) # 출력: 24
print(dt.hour) # 출력: 14
print(dt.minute) # 출력: 30
print(dt.second) # 출력: 45
datetime.timedelta
클래스
이 클래스는 두 시점 간의 차이를 나타내며, 일, 초, 마이크로초로 표현돼. 날짜와 시간에 대한 산술 연산 수행에 유용해.
사용 예시:
import datetime
# timedelta 객체 생성
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # 출력: 10 days, 5:30:00
# 날짜에 timedelta 더하기
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # 출력: 2023-06-03 20:00:00
# 날짜에서 timedelta 빼기
earlier_dt = dt - delta
print(earlier_dt) # 출력: 2023-05-14 09:00:00
4.2 날짜와 시간의 포맷팅 및 파싱
종종 우리는 단순히 날짜를 다루는 것뿐만 아니라 특정 형식의 문자열로 변환해야 해. 문자열을 객체로 변환하는 반대 과정은 일반적으로 파싱이라고 불려. 이러한 작업을 위해 Python에는 클래스와 메서드가 있어:
strftime()
메서드
strftime()
메서드는 주어진 형식에 따라 datetime
객체를 문자열로 포맷하는 데 사용돼.
사용 예시:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# 날짜와 시간 포맷팅
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # 출력: 2023-05-24 14:30:45
# 날짜만 포맷팅
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # 출력: 24-05-2023
# 시간만 포맷팅
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # 출력: 14:30:45
strptime()
메서드
strptime()
메서드는 주어진 형식에 따라 문자열을 datetime
객체로 파싱하는 데 사용돼.
사용 예시:
import datetime
# 문자열을 datetime 객체로 파싱
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # 출력: 2023-05-24 14:30:45
# 문자열을 date 객체로 파싱
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # 출력: 2023-05-24
# 문자열을 time 객체로 파싱
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # 출력: 14:30:45
4.3 시간대 다루기
실제로 우리의 서비스는 전 세계 사람들이 사용하곤 하고, 안타깝게도 그들은 서로 다른 나라에 살고 있으며, 서로 다른 시간대(timezone
)를 가지고 있어. 프로그래머로서 너는 이들을 다룰 줄 알아야 해.
Python에는 이 경우에 대한 클래스도 있어:
timezone
클래스
datetime
모듈의 timezone
클래스는 시간대를 다루기 위한 거야.
import datetime
# UTC 시간대가 있는 datetime 객체 생성
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # 출력: 2023-05-24 14:30:45+00:00
# 다른 시간대로 변환
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # 출력: 2023-05-24 23:30:45+09:00
우리는 datetime
라이브러리를 정말 넓게, 심지어는 표면적으로 다뤘어. 나중에 다시 돌아와서 더 구체적인 작업을 위해 사용하는 방법을 배울 거야. 지금은 단지 너에게 이 라이브러리를 소개하고 표준 라이브러리 세트를 확장시키고 싶었어.
어떤 라이브러리든지 간에, 가장 중요한 것은 그것이 존재한다는 것을 알고, 그것을 사용해서 무엇을 할 수 있는지 아는 것이야. 함수 목록, 매개변수 및 모든 가능성은 항상 공식 문서에서 찾을 수 있어.
GO TO FULL VERSION