[python] dateutil을 사용하여 주말 및 휴일 검사

일반적으로 날짜 연산을 수행하기 위해 많은 사람들이 Python의 datetime 모듈을 사용합니다. 그러나 datetime 모듈만으로는 주말이나 휴일 여부를 쉽게 확인할 수 없습니다. 이러한 경우 dateutil 패키지를 사용하면 훨씬 간편하게 주말이나 휴일을 검사할 수 있습니다.

dateutil 설치 및 가져오기

dateutil 패키지는 pip를 사용하여 간단하게 설치할 수 있습니다.

pip install python-dateutil

다음과 같이 dateutil 패키지를 가져옵니다.

from dateutil import rrule
from dateutil.relativedelta import MO

주말 및 휴일 검사

주말 및 휴일을 검사하기 위해서는 먼저 휴일 목록을 생성해야 합니다. 휴일 목록은 Python의 set 자료구조를 사용하여 구현할 수 있습니다. 예를 들어, 다음과 같이 휴일 목록을 설정합니다.

holidays = {datetime.date(2021, 1, 1),  # New Year's Day
            datetime.date(2021, 12, 25)  # Christmas Day
            }

이제 주말 및 휴일을 검사하는 함수를 작성해보겠습니다.

def is_weekend_or_holiday(date):
    # 주말 여부 확인
    if date.weekday() >= 5:
        return True
    
    # 휴일 여부 확인
    if date in holidays:
        return True
    
    return False

주말 여부를 확인하기 위해서는 주어진 날짜의 weekday() 메서드를 사용하여 해당 날짜의 요일을 확인합니다. 요일 값이 5 이상이면 토요일이나 일요일입니다. 휴일 여부를 확인하기 위해서는 주어진 날짜가 휴일 목록에 있는지 확인합니다.

예제

다음은 2021년 1월부터 2022년 1월까지의 주말 및 휴일을 출력하는 예제 코드입니다.

start_date = datetime.date(2021, 1, 1)
end_date = datetime.date(2022, 1, 1)

for date in rrule.rrule(rrule.DAILY, dtstart=start_date, until=end_date):
    if is_weekend_or_holiday(date):
        print(date)

위의 예제 코드를 실행하면 2021년 1월 1일부터 2022년 1월 1일까지의 주말 및 휴일을 출력합니다.

결론

Python의 dateutil 패키지를 사용하면 주말이나 휴일 여부를 간편하게 확인할 수 있습니다. 휴일 목록을 설정하고, 주말이나 휴일 여부를 확인하는 함수를 작성하여 날짜 연산에 유용하게 사용할 수 있습니다.

참고 자료