[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’와 같은 간격을 지정하여 이전 혹은 다음 휴일 날짜를 계산할 수 있습니다. 주말 역시 휴일로 간주되므로 함께 계산됩니다.
이 예제 코드를 실행하면 현재 날짜를 기준으로 이전/다음 휴일 날짜를 출력합니다.
참고 자료
- workalendar 문서: https://pypi.org/project/workalendar/
- workalendar Github 저장소: https://github.com/peopledoc/workalendar