소개
Python 의 datetime 모듈은 날짜와 시간을 다루는 강력한 도구입니다. 이 튜토리얼에서는 datetime 객체에 시간을 추가하는 다양한 방법을 안내하여 Python 에서 정확하고 유연한 시간 계산을 수행하는 방법을 보여줍니다. timedelta를 사용하여 간단한 덧셈을 수행하는 방법과 시간 조작의 실제 예제를 살펴볼 것입니다.
Python 의 datetime 모듈은 날짜와 시간을 다루는 강력한 도구입니다. 이 튜토리얼에서는 datetime 객체에 시간을 추가하는 다양한 방법을 안내하여 Python 에서 정확하고 유연한 시간 계산을 수행하는 방법을 보여줍니다. timedelta를 사용하여 간단한 덧셈을 수행하는 방법과 시간 조작의 실제 예제를 살펴볼 것입니다.
시간을 추가하기 전에 datetime 모듈의 기본 구성 요소를 이해하는 것이 중요합니다.
datetime 모듈은 여러 핵심 클래스를 제공합니다.
| 클래스 | 설명 |
|---|---|
date |
날짜 (년, 월, 일) 를 나타냅니다. |
time |
시간 (시, 분, 초) 를 나타냅니다. |
datetime |
날짜와 시간을 결합합니다. |
timedelta |
시간 간격을 나타냅니다. |
datetime 객체는 여러 가지 방법으로 생성할 수 있습니다. 간단한 Python 스크립트를 통해 이를 살펴보겠습니다.
WebIDE 의 통합 터미널을 열고 프로젝트 디렉토리로 이동하세요 (아직 그렇지 않은 경우).
cd ~/project
WebIDE 파일 탐색기 또는 명령줄을 사용하여 ~/project 디렉토리에 datetime_basics.py라는 새 파일을 만듭니다.
touch datetime_basics.py
WebIDE 편집기에서 datetime_basics.py를 열고 다음 코드를 추가합니다.
from datetime import date, time, datetime
## 날짜 객체 생성
current_date = date.today()
print(f"현재 날짜: {current_date}")
## 시간 객체 생성 (현재 datetime 에서)
current_time = datetime.now().time()
print(f"현재 시간: {current_time}")
## datetime 객체 생성
current_datetime = datetime.now()
print(f"현재 datetime: {current_datetime}")
## 특정 datetime 객체 생성
specific_datetime = datetime(2023, 6, 15, 14, 30, 45)
print(f"특정 datetime: {specific_datetime}")
파일을 저장합니다. 이제 터미널에서 스크립트를 실행합니다.
python datetime_basics.py
다음과 유사한 출력이 표시됩니다.
현재 날짜: YYYY-MM-DD
현재 시간: HH:MM:SS.microseconds
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
특정 datetime: 2023-06-15 14:30:45
이 예제는 기본 date, time, datetime 객체를 생성하는 방법을 보여줍니다.
datetime 객체에는 year, month, day, hour, minute, second와 같은 속성이 있으며 이러한 속성에 접근할 수 있습니다.
이러한 속성에 접근하는 방법을 보여주기 위해 datetime_basics.py 스크립트에 추가해 보겠습니다.
datetime_basics.py를 다시 열고 마지막에 다음 줄을 추가합니다.
print(f"년: {specific_datetime.year}")
print(f"월: {specific_datetime.month}")
print(f"일: {specific_datetime.day}")
print(f"시: {specific_datetime.hour}")
print(f"분: {specific_datetime.minute}")
print(f"초: {specific_datetime.second}")
파일을 저장하고 다시 실행합니다.
python datetime_basics.py
이제 출력에는 specific_datetime의 개별 구성 요소가 포함됩니다.
현재 날짜: YYYY-MM-DD
현재 시간: HH:MM:SS.microseconds
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
특정 datetime: 2023-06-15 14:30:45
년: 2023
월: 6
일: 15
시: 14
분: 30
초: 45
이러한 기본 사항을 이해하는 것은 시간 추가를 수행하기 위한 첫 번째 단계입니다.
Python 에서 datetime 객체에 시간을 추가하는 가장 일반적인 방법은 timedelta 클래스를 사용하는 것입니다. timedelta 객체는 시간 간격을 나타냅니다.
timedelta 객체는 days, hours, minutes, seconds, milliseconds, microseconds와 같은 다양한 시간 단위를 사용하여 생성할 수 있습니다.
timedelta를 탐색하기 위해 새로운 Python 스크립트를 만들어 보겠습니다.
~/project 디렉토리에 time_addition.py라는 새 파일을 만듭니다.
touch time_addition.py
time_addition.py를 열고 다음 코드를 추가합니다.
from datetime import datetime, timedelta
## 현재 datetime 가져오기
current_datetime = datetime.now()
print(f"현재 datetime: {current_datetime}")
## 5 일의 timedelta 생성
five_days = timedelta(days=5)
print(f"5 일의 timedelta: {five_days}")
## 3 시간 30 분의 timedelta 생성
three_hours_thirty_minutes = timedelta(hours=3, minutes=30)
print(f"3 시간 30 분의 timedelta: {three_hours_thirty_minutes}")
## 1 주일 2 일의 timedelta 생성
one_week_two_days = timedelta(weeks=1, days=2)
print(f"1 주일 2 일의 timedelta: {one_week_two_days}")
파일을 저장하고 실행합니다.
python time_addition.py
출력은 현재 datetime 과 생성된 timedelta 객체를 보여줄 것입니다.
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
5일의 timedelta: 5일, 0:00:00
3시간 30분의 timedelta: 3:30:00
1주일 2일의 timedelta: 9일, 0:00:00
timedelta(weeks=1, days=2)가 9일로 표시되는 것을 주목하세요. timedelta는 시간 간격을 일, 초, 마이크로초로 정규화합니다.
timedelta 객체를 datetime 객체에 추가하여 미래 시점을 나타내는 새로운 datetime 객체를 얻을 수 있습니다.
시간 추가를 수행하기 위해 time_addition.py에 코드를 추가해 보겠습니다.
time_addition.py를 열고 마지막에 다음 줄을 추가합니다.
## 현재 datetime 에 5 일 추가
future_datetime_days = current_datetime + five_days
print(f"5 일 후 datetime: {future_datetime_days}")
## 현재 datetime 에 3 시간 30 분 추가
future_datetime_hours_minutes = current_datetime + three_hours_thirty_minutes
print(f"3 시간 30 분 후 datetime: {future_datetime_hours_minutes}")
## 현재 datetime 에 1 주일 2 일 추가
future_datetime_weeks_days = current_datetime + one_week_two_days
print(f"1 주일 2 일 후 datetime: {future_datetime_weeks_days}")
파일을 저장하고 실행합니다.
python time_addition.py
이제 출력에는 원래 datetime 과 timedelta 객체를 추가한 후의 결과 datetime 이 표시됩니다.
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
5일의 timedelta: 5일, 0:00:00
3시간 30분의 timedelta: 3:30:00
1주일 2일의 timedelta: 9일, 0:00:00
5일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
3시간 30분 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
1주일 2일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
출력은 추가 후 새로운 datetime 값을 보여줍니다. 이는 시간 추가를 위한 timedelta의 기본 사용법을 보여줍니다.
timedelta는 미래 날짜 찾기 또는 두 시점 사이의 시간 간격 계산과 같은 실용적인 시간 계산에 매우 유용합니다.
특정 일수, 주 또는 심지어 연도 (연도를 일로 변환하여) 미래의 날짜를 쉽게 계산할 수 있습니다.
time_addition.py에 미래 날짜를 계산하는 함수를 추가해 보겠습니다.
time_addition.py를 열고 마지막에 다음 함수 정의와 사용 예제를 추가합니다.
def get_future_date(start_date, days_to_add):
"""일정 수의 일을 더하여 미래 날짜를 계산합니다."""
future_date = start_date + timedelta(days=days_to_add)
return future_date
## 예제: 현재 날짜로부터 30 일 후의 날짜 찾기
thirty_days_from_now = get_future_date(datetime.now(), 30)
print(f"현재 날짜로부터 30 일 후의 날짜: {thirty_days_from_now}")
파일을 저장하고 실행합니다.
python time_addition.py
출력에는 현재 날짜로부터 30 일 후의 날짜가 포함될 것입니다.
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
5일의 timedelta: 5일, 0:00:00
3시간 30분의 timedelta: 3:30:00
1주일 2일의 timedelta: 9일, 0:00:00
5일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
3시간 30분 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
1주일 2일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
현재 날짜로부터 30일 후의 날짜: YYYY-MM-DD HH:MM:SS.microseconds
두 datetime 객체를 서로 빼서 두 시점 사이의 시간 간격을 나타내는 timedelta 객체를 얻을 수도 있습니다.
time_addition.py에 두 날짜 사이의 차이를 계산하는 코드를 추가해 보겠습니다.
time_addition.py를 열고 마지막에 다음 코드를 추가합니다.
## 두 특정 datetime 사이의 차이 계산
date1 = datetime(2023, 1, 1)
date2 = datetime(2023, 12, 31)
time_difference = date2 - date1
print(f"{date1}과 {date2} 사이의 차이: {time_difference}")
## timedelta 차이의 구성 요소에 접근
print(f"일 차이: {time_difference.days}")
print(f"총 초 차이: {time_difference.total_seconds()}")
파일을 저장하고 실행합니다.
python time_addition.py
출력에는 두 날짜 사이의 차이가 표시될 것입니다.
현재 datetime: YYYY-MM-DD HH:MM:SS.microseconds
5일의 timedelta: 5일, 0:00:00
3시간 30분의 timedelta: 3:30:00
1주일 2일의 timedelta: 9일, 0:00:00
5일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
3시간 30분 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
1주일 2일 후 datetime: YYYY-MM-DD HH:MM:SS.microseconds
현재 날짜로부터 30일 후의 날짜: YYYY-MM-DD HH:MM:SS.microseconds
2023-01-01 00:00:00과 2023-12-31 00:00:00 사이의 차이: 364일, 0:00:00
일 차이: 364
총 초 차이: 31449600.0
이 예제는 timedelta를 시간 추가 및 두 시점 사이의 시간 간격 계산에 사용하는 방법을 보여줍니다. 이러한 연산은 많은 시간 기반 애플리케이션에 기본적인 연산입니다.
이 실습에서 Python 의 datetime 모듈 기본 사항, 즉 date, time, datetime 객체를 만드는 방법을 배웠습니다. timedelta 클래스를 사용하여 시간 간격을 나타내는 방법과 timedelta 객체를 datetime 객체에 추가하여 시간을 더하는 방법을 탐색했습니다. 또한 미래 날짜 찾기 및 두 날짜 간의 차이 계산과 같은 실용적인 시간 계산 연습을 했습니다. 이러한 기술은 Python 프로그램에서 시간 관련 작업을 처리하는 데 필수적입니다.