[python] 파이썬 workalendar를 사용하여 특정 날짜의 이전/다음 휴일 혹은 영업일과 주말까지의 간격 계산하기

우리는 종종 특정 날짜의 이전 또는 다음 휴일과 주말까지의 간격을 계산해야 할 때가 있습니다. 이를 위해 파이썬의 workalendar 라이브러리를 사용할 수 있습니다. workalendar는 세계 각국의 공휴일 및 영업일 정보를 제공하는 라이브러리입니다.

workalendar 설치하기

먼저, workalendar를 설치해야 합니다. 다음 명령을 사용하여 파이썬 패키지 매니저를 통해 workalendar를 설치할 수 있습니다.

pip install workalendar

특정 날짜의 이전/다음 휴일과 주말까지의 간격 계산하기

다음은 workalendar를 사용하여 특정 날짜의 이전/다음 휴일과 주말까지의 간격을 계산하는 예제 코드입니다.

from workalendar.registry import registry
from datetime import datetime, timedelta

def calculate_date_interval(date, interval):
    cal = registry.get_calendar_class('KR')
    holidays = cal().holidays()

    if interval == 'previous':
        delta = -1
    elif interval == 'next':
        delta = 1
    else:
        raise ValueError("Invalid interval value. Allowed values are 'previous' or 'next'.")

    count = 0
    current_date = date

    while count < abs(delta):
        current_date += timedelta(days=delta)
        if current_date.weekday() >= 5 or current_date in holidays:
            count += 1

    return current_date

# 사용 예시
today = datetime.now().date()
previous_holiday = calculate_date_interval(today, 'previous')
next_holiday = calculate_date_interval(today, 'next')

print(f"오늘: {today}")
print(f"이전 휴일: {previous_holiday}")
print(f"다음 휴일: {next_holiday}")

위 코드에서는 workalendar의 registry를 사용하여 한국의 공휴일 정보를 가져옵니다. ‘previous’나 ‘next’와 같은 간격을 지정하여 이전 혹은 다음 휴일 날짜를 계산할 수 있습니다. 주말 역시 휴일로 간주되므로 함께 계산됩니다.

이 예제 코드를 실행하면 현재 날짜를 기준으로 이전/다음 휴일 날짜를 출력합니다.

참고 자료