[python] pytz를 사용하여 주말 및 공휴일을 제외한 비즈니스 날짜 가져오기

안녕하세요! 이번에는 pytz를 사용하여 주말 및 공휴일을 제외한 비즈니스 날짜를 가져오는 방법에 대해 알아보겠습니다. pytz는 파이썬에서 시간대 관련 작업을 수행하는 라이브러리로 많이 사용됩니다.

pytz 설치하기

먼저, pytz를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install pytz

비즈니스 날짜 가져오기

pytz를 사용하여 주말 및 공휴일을 제외한 비즈니스 날짜를 가져오려면 다음과 같은 단계를 따르면 됩니다:

  1. 필요한 라이브러리 가져오기
  2. 주말을 제외한 비즈니스 날짜를 계산하는 함수 만들기
  3. 공휴일을 제외한 비즈니스 날짜를 계산하는 함수 만들기

필요한 라이브러리 가져오기

import pytz
from datetime import datetime, timedelta

먼저, pytz와 datetime 라이브러리를 가져옵니다.

주말을 제외한 비즈니스 날짜 계산하기

def get_business_date(start_date, num_days):
    tz = pytz.timezone('Asia/Seoul')
    current_date = start_date
    business_days = 0

    while business_days < num_days:
        current_date += timedelta(days=1)
        if current_date.weekday() < 5:
            business_days += 1

    return current_date.astimezone(tz)

위 함수는 주말을 제외한 비즈니스 날짜를 계산하는 역할을 합니다. start_date는 시작 날짜이고, num_days는 가져올 비즈니스 날짜의 수입니다. 현재는 Asia/Seoul 시간대를 사용하도록 설정되어 있습니다.

공휴일을 제외한 비즈니스 날짜 계산하기

def get_business_date_without_holidays(start_date, num_days, holidays):
    tz = pytz.timezone('Asia/Seoul')
    current_date = start_date
    business_days = 0

    while business_days < num_days:
        current_date += timedelta(days=1)
        if current_date.weekday() < 5 and current_date not in holidays:
            business_days += 1

    return current_date.astimezone(tz)

위 함수는 공휴일을 제외한 비즈니스 날짜를 계산하는 역할을 합니다. start_date와 num_days 매개변수는 get_business_date 함수와 동일하며, holidays 매개변수는 제외할 공휴일 목록입니다.

사용 예시

start_date = datetime(2022, 1, 1)
num_days = 5
holidays = [
    datetime(2022, 1, 3),
    datetime(2022, 1, 6)
]

business_date = get_business_date(start_date, num_days)
business_date_without_holidays = get_business_date_without_holidays(start_date, num_days, holidays)

print(business_date)
print(business_date_without_holidays)

위 코드는 start_date부터 num_days일 동안의 비즈니스 날짜를 가져오는 예시입니다. holidays 리스트에는 제외할 공휴일을 추가하면 됩니다.

이제 pytz를 사용하여 주말 및 공휴일을 제외한 비즈니스 날짜를 가져오는 방법을 알게 되었습니다. pytz의 다양한 기능을 활용하여 날짜 및 시간 작업을 보다 효율적으로 수행할 수 있습니다. 자세한 내용은 pytz 공식 문서를 참고하시기 바랍니다.