[python] 파이썬 workalendar를 사용하여 특정 날짜의 이전/다음 휴일 혹은 영업일 사이의 모든 날짜 가져오기

파이썬에서 workalendar 라이브러리는 다양한 국가의 공식 휴일 및 영업일을 관리하는 데 유용한 도구입니다. 이 라이브러리를 사용하면 특정 날짜를 기준으로 이전이나 다음 휴일 혹은 영업일 사이의 모든 날짜를 가져올 수 있습니다. 이를 통해 날짜 연산이나 비즈니스 로직에 유용한 기능을 구현할 수 있습니다.

workalendar 설치하기

workalendar를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. pip를 사용하여 설치할 수 있습니다.

pip install workalendar

예제 코드

다음은 workalendar를 사용하여 특정 날짜의 이전이나 다음 휴일 혹은 영업일 사이의 모든 날짜를 가져오는 예제 코드입니다.

from workalendar.europe import France # 원하는 국가를 import 합니다.
from datetime import date, timedelta

holiday_cal = France() # 원하는 국가의 Calendar 객체를 생성합니다.

def get_previous_holidays(start_date, num_days):
    holidays = []
    count = 0
    current_date = start_date
    while count < num_days:
        current_date -= timedelta(days=1) # 이전 날짜 구하기
        if holiday_cal.is_working_day(current_date):
            count += 1
        elif holiday_cal.is_holiday(current_date):
            holidays.append(current_date)
    holidays.sort(reverse=True) # 최신 날짜부터 정렬
    return holidays

def get_next_holidays(start_date, num_days):
    holidays = []
    count = 0
    current_date = start_date
    while count < num_days:
        current_date += timedelta(days=1) # 다음 날짜 구하기
        if holiday_cal.is_working_day(current_date):
            count += 1
        elif holiday_cal.is_holiday(current_date):
            holidays.append(current_date)
    return holidays

# 예제 사용
start_date = date(2022, 12, 25) # 시작 날짜
num_days = 5 # 가져올 날짜 수

previous_holidays = get_previous_holidays(start_date, num_days)
next_holidays = get_next_holidays(start_date, num_days)

print("이전 휴일:")
for holiday in previous_holidays:
    print(holiday)
print("")

print("다음 휴일:")
for holiday in next_holidays:
    print(holiday)

위 예제 코드에서는 workalendar의 France 객체를 사용하여 프랑스의 휴일 정보를 가져옵니다. 원하는 국가에 따라 객체를 변경하면 다른 국가의 휴일 정보도 가져올 수 있습니다. get_previous_holidays 함수는 시작 날짜를 기준으로 이전의 모든 휴일을 가져오고, get_next_holidays 함수는 시작 날짜를 기준으로 다음의 모든 휴일을 가져옵니다.

휴일은 date 객체로 반환되며, 날짜들은 리스트에 저장되어 출력됩니다.

결론

workalendar 라이브러리를 사용하면 파이썬으로 다양한 국가의 휴일 및 영업일 관리를 효율적으로 할 수 있습니다. 이전이나 다음 휴일을 찾는 등의 작업에 유용한 기능을 제공합니다. 이를 통해 비즈니스 애플리케이션을 개발할 때 휴일 관련 로직을 쉽게 구현할 수 있습니다.

참고 자료