[python] 파이썬 workalendar를 사용하여 특정 날짜의 이전/다음 휴일이 기준 날짜로부터 며칠 떨어져 있는지 계산하기

파이썬을 통해 특정 날짜의 이전 또는 다음 휴일이 기준 날짜로부터 며칠 떨어져 있는지 계산하는 방법을 알아보겠습니다. 이를 위해 workalendar 모듈을 사용할 것입니다.

workalendar 모듈 설치하기

먼저, workalendar 모듈을 설치해야 합니다. pip를 통해 아래와 같이 설치할 수 있습니다.

pip install workalendar

코드 작성하기

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

from datetime import date
from workalendar.registry import registry

# 특정 국가의 휴일 기준으로 설정합니다.
calendar = registry.get_calendar_class('CountryCode')

# 날짜를 생성합니다.
base_date = date(year, month, day)

# 이전/다음 휴일 계산하기
previous_holiday = calendar.find_nearest_holiday(base_date, direction=-1)
next_holiday = calendar.find_nearest_holiday(base_date, direction=1)

# 결과 출력
print(f"이전 휴일: {previous_holiday[0]} (남은 일수: {base_date - previous_holiday[0]})")
print(f"다음 휴일: {next_holiday[0]} (남은 일수: {next_holiday[0] - base_date})")

위의 코드에서 ‘CountryCode’에는 특정 국가의 코드를 입력하면 됩니다. 예를 들어, 대한민국의 경우 ‘KR’을 사용합니다.

특정 날짜의 이전/다음 휴일이 기준 날짜로부터 며칠 떨어져 있는지 계산되어 출력됩니다.

예제 실행하기

위의 코드를 참고하여 특정 날짜와 국가 코드를 입력하여 실행해볼 수 있습니다. 예를 들어, 대한민국의 특정 날짜인 2022년 5월 5일의 이전/다음 휴일을 계산해보겠습니다.

from datetime import date
from workalendar.registry import registry

calendar = registry.get_calendar_class('KR')

base_date = date(2022, 5, 5)

previous_holiday = calendar.find_nearest_holiday(base_date, direction=-1)
next_holiday = calendar.find_nearest_holiday(base_date, direction=1)

print(f"이전 휴일: {previous_holiday[0]} (남은 일수: {base_date - previous_holiday[0]})")
print(f"다음 휴일: {next_holiday[0]} (남은 일수: {next_holiday[0] - base_date})")

실행 결과는 다음과 같습니다.

이전 휴일: 2022-05-01 (남은 일수: 4 days, 0:00:00)
다음 휴일: 2022-05-08 (남은 일수: 3 days, 0:00:00)

이와 같이 workalendar 모듈을 활용하여 특정 날짜의 이전/다음 휴일과 며칠 떨어져 있는지 쉽게 계산할 수 있습니다.

참고 자료