특정 년도와 특정 달의 마지막 날짜를 계산하는 방법에 대해서 알아보겠습니다.

1. calendar를 이용한 방법

calendar.monthrange(year, month)는 특정 년도, 월의 정보를 Tuple로 리턴합니다.

  • monthrange[0] : 월의 시작 날짜
  • monthrange[1] : 월의 마지막 날짜

아래와 같이 calendar를 사용하여 특정 년도, 월의 마지막 날짜를 찾을 수 있습니다.

import calendar

year = 2023
month = 9  # 9월의 마지막 날을 찾는 예제

last_day = calendar.monthrange(year, month)[1]
print(f"{year}{month}월의 마지막 날은 {last_day}일입니다.")

Output:

2023년 9월의 마지막 날은 30일입니다.

2. datetime을 이용한 방법

만약 9월의 마지막 날짜를 찾고 싶을 때, 10월에서 하루를 빼면, 그 날짜가 마지막 날짜가 됩니다.

이런 방법을 활용하여, 아래 예제와 같이 datetime으로 특정 월의 마지막 날짜를 찾을 수 있습니다.

  • datetime(year, month, 1) : year년 month월 1일에 대한 datetime 객체 생성
  • relativedelta.relativedelta(months=1) : 한달을 더함
  • next_month = datetime(year, month, 1) + relativedelta.relativedelta(months=1) : 원하는 월의 다음 월 첫번째 날짜에 대한 datetime 객체
  • (next_month - timedelta(days=1)).day : next_month에서 하루를 빼고, 그 날짜를 리턴, 즉, 원하는 월의 마지막 날짜가 리턴됨
from datetime import datetime, timedelta
from dateutil import relativedelta

year = 2023
month = 9  # 9월의 마지막 날을 찾는 예제

next_month = datetime(year, month, 1) + relativedelta.relativedelta(months=1)
last_day = (next_month - timedelta(days=1)).day
print(f"{year}{month}월의 마지막 날은 {last_day}일입니다.")

Output:

2023년 9월의 마지막 날은 30일입니다.

3. 특정 월의 첫번째 날짜 찾기

첫번째 날짜는 항상 1이기 때문에 따로 계산할 필요가 없습니다.