Python에서 특정 날짜의 마지막 날짜를 구하는 방법
import datetime
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
return datetime.date(year, month, 1) + datetime.timedelta(days = -1)
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 2024-07-31
설명:
datetime
모듈을 불러옵니다.last_day_of_month
함수는 매개변수로year
와month
를 받아 해당 년/월의 마지막 날짜를 반환합니다.datetime.date(year, month, 1)
은 매월 1일을datetime
객체로 만듭니다.datetime.timedelta(days = -1)
은 1일을 뺀timedelta
객체를 만듭니다.- 두 객체를 더하여 마지막 날짜를 계산합니다.
calendar 모듈 활용:
import calendar
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
return calendar.monthrange(year, month)[1]
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 31
calendar
모듈을 불러옵니다.calendar.monthrange(year, month)
는 튜플을 반환하며, 첫 번째 요소는 해당 월의 첫 번째 날짜, 두 번째 요소는 마지막 날짜입니다.- 마지막 날짜만 추출하여 반환합니다.
추가 기능:
- 윤년 여부를 고려하여 마지막 날짜를 계산하는 함수를 작성할 수 있습니다.
- 특정 날짜가 포함된 달의 마지막 날짜를 구하는 함수를 작성할 수 있습니다.
주의:
- 위 코드는 일반적인 경우에만 적용됩니다.
- 2월 29일과 같은 특수한 날짜를 처리하려면 추가적인 로직이 필요할 수 있습니다.
import datetime
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
return datetime.date(year, month, 1) + datetime.timedelta(days = -1)
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 2024-07-31
datetime
모듈을 불러옵니다. 이 모듈은 날짜와 시간을 처리하는 데 사용되는 함수와 클래스를 제공합니다.last_day_of_month
함수를 정의합니다. 이 함수는 두 개의 매개변수,year
와month
를 받습니다.- 마지막 날짜를 출력합니다.
이 예제에서는 last_day_of_month
함수를 사용하여 2024년 7월의 마지막 날짜를 계산합니다. 함수는 datetime.date(2024, 7, 1)
객체와 datetime.timedelta(days = -1)
객체를 더하여 2024년 7월 31일을 반환합니다.
다음은 calendar
모듈을 사용하여 동일한 결과를 얻는 방법입니다.
import calendar
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
return calendar.monthrange(year, month)[1]
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 31
이 코드는 calendar.monthrange()
함수를 사용하여 2024년 7월의 마지막 날짜를 계산합니다. 이 함수는 튜플을 반환하며, 첫 번째 요소는 해당 월의 첫 번째 날짜, 두 번째 요소는 마지막 날짜입니다. 마지막 날짜만 추출하여 출력합니다.
Python에서 특정 날짜의 마지막 날짜를 구하는 대체 방법
itertools 모듈 활용:
import itertools
import datetime
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
return max(itertools.chain.from_iterable(
[datetime.date(year, month, day) for day in range(1, calendar.monthrange(year, month)[1] + 1)]))
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 2024-07-31
itertools
모듈에서chain.from_iterable
함수를 사용하여 매월 1일부터 마지막 날짜까지 모든 날짜를 포함하는iterator
를 만듭니다.max()
함수를 사용하여iterator
에서 가장 큰 값 (마지막 날짜)을 반환합니다.
pandas 라이브러리 활용 (선택 사항):
import pandas as pd
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
df = pd.DataFrame({'date': pd.date_range(start=f'{year}-{month}-01', end=f'{year}-{month}-31')})
return df['date'].max()
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 2024-07-31
pandas
라이브러리를 사용하여 특정 년/월의 모든 날짜를 포함하는DataFrame
을 만듭니다.DataFrame
의max()
함수를 사용하여 마지막 날짜를 반환합니다.
직접 계산:
def last_day_of_month(year, month):
"""특정 년/월의 마지막 날짜를 반환합니다."""
if month == 2:
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return 29
else:
return 28
else:
return 30 if month in [4, 6, 9, 11] else 31
# 예시
year = 2024
month = 7
last_day = last_day_of_month(year, month)
print(last_day) # 결과: 31
- 2월인 경우 윤년 여부를 판단하여 마지막 날짜를 계산합니다.
- 2월이 아닌 경우, 4, 6, 9, 11월은 30일, 나머지 달은 31일이라는 사실을 이용하여 마지막 날짜를 계산합니다.
주의 사항:
선택:
각 방법마다 장단점이 있습니다.
datetime
모듈을 사용하는 방법은 가장 명확하고 이해하기 쉬우며, 대부분의 경우에 적합합니다.calendar
모듈을 사용하는 방법은 간결하지만, 함수의 작동 방식을 이해하기 어려울 수 있습니다.itertools
모듈을 사용하는 방법은 함수를 직접 작성하고 싶은 경우 유용할 수 있습니다.pandas
라이브러리를 사용하는 방법은pandas
를 이미 사용하고 있는 경우 편리할 수 있습니다.- 직접 계산하는 방법은 코드를 최대한 간결하게 만들고 싶은 경우 사용할 수 있지만, 다른 방법들보다 오류 가능성이 높습니다.
python date