[python] 파이썬 workalendar를 사용하여 특정 날짜의 주말과 공휴일의 개수 계산하기

파이썬에서 날짜와 관련된 계산을 할 때, workalendar라는 라이브러리를 사용할 수 있습니다. workalendar는 다양한 국가의 공휴일 정보를 제공하며, 특정 날짜의 주말과 공휴일의 개수를 쉽게 계산할 수 있습니다.

다음은 workalendar를 사용하여 특정 날짜의 주말과 공휴일의 개수를 계산하는 예제 코드입니다.

from workalendar.asia import SouthKorea
from datetime import date

def count_weekends_and_holidays(date_str):
    cal = SouthKorea()
    date_obj = date.fromisoformat(date_str)

    num_weekends = 0
    num_holidays = 0

    # 특정 날짜 이후의 주말과 공휴일 개수 계산
    for i in range(30):
        temp_date = date_obj + timedelta(days=i)
        if cal.is_working_day(temp_date):
            num_weekends += 1
        if cal.is_holiday(temp_date):
            num_holidays += 1

    return num_weekends, num_holidays

# 특정 날짜의 주말과 공휴일 개수 계산하기
date_str = "2022-05-05"
weekends, holidays = count_weekends_and_holidays(date_str)

print(f"주말 개수: {weekends}")
print(f"공휴일 개수: {holidays}")

위 예제 코드에서는 workalendar.asia 모듈에서 SouthKorea 클래스를 import하여 한국의 공휴일 정보를 사용했습니다. 특정 날짜의 주말과 공휴일 개수를 계산하기 위해 count_weekends_and_holidays 함수를 작성했습니다.

함수 내에서는 입력으로 받은 날짜를 date 객체로 변환하고, 특정 날짜부터 30일 이내에 있는 주말과 공휴일의 개수를 계산합니다. 루프를 돌면서 is_working_day 메서드를 사용하여 주말인지 확인하고, is_holiday 메서드를 사용하여 공휴일인지 확인합니다. 주말 개수와 공휴일 개수를 각각 num_weekends와 num_holidays 변수에 누적시킨 후, 최종적으로 반환합니다.

위 예제 코드에서는 “2022-05-05”라는 날짜를 입력으로 사용하여 주말 개수와 공휴일 개수를 계산하고 출력합니다.

주의할 점은 예제 코드에서 계산 기간을 30일로 설정하였으며, 실제로는 특정 기간을 설정하여 계산할 수 있습니다. 또한, workalendar 라이브러리는 공휴일 정보를 제공하는 다양한 모듈을 제공하므로, 다른 국가의 공휴일 정보를 사용하려면 해당 모듈을 import하여 사용하면 됩니다.

참고 자료