[python] pytz를 사용하여 작업 예약에서 주말 및 공휴일 제외하기

작업 예약 시 주말과 공휴일을 제외하는 것은 상당히 일반적인 요구사항입니다. 이를 처리하기 위해 파이썬의 pytz 라이브러리를 사용할 수 있습니다.

pytz 라이브러리 설치

먼저, pytz 라이브러리를 설치해야 합니다. 아래의 명령을 사용하여 설치할 수 있습니다:

pip install pytz

주말 제외

파이썬에서는 datetime 모듈을 사용하여 날짜와 시간을 다룰 수 있습니다. 우리의 목적은 해당하는 날짜가 주말인지 여부를 확인하는 것입니다. 아래의 예시 코드를 참고하세요:

from datetime import datetime

def is_weekend(date):
    # weekday() 함수를 사용하여 요일을 확인
    # 0은 월요일, 6은 일요일을 나타냄
    return date.weekday() >= 5

# 현재 날짜가 주말인지 확인
now = datetime.now()
if is_weekend(now):
    print("현재 날짜는 주말입니다.")
else:
    print("현재 날짜는 주말이 아닙니다.")

공휴일 제외

공휴일을 제외하기 위해 pytz 라이브러리의 timezone 클래스와 holidays 함수를 사용할 수 있습니다. 아래의 예시 코드를 참고하세요:

import pytz
from datetime import datetime

def is_holiday(date):
    # 공휴일 목록 가져오기
    holidays = pytz.timezone('Asia/Seoul').holidays()

    # 주어진 날짜가 공휴일 목록에 있는지 확인
    return date in holidays

# 현재 날짜가 공휴일인지 확인
now = datetime.now(pytz.timezone('Asia/Seoul'))
if is_holiday(now):
    print("현재 날짜는 공휴일입니다.")
else:
    print("현재 날짜는 공휴일이 아닙니다.")

주말과 공휴일 제외

이제 주말과 공휴일을 동시에 제외하는 방법을 알아보겠습니다. 아래의 예시 코드를 참고하세요:

import pytz
from datetime import datetime

def is_weekend(date):
    return date.weekday() >= 5

def is_holiday(date):
    holidays = pytz.timezone('Asia/Seoul').holidays()
    return date in holidays

def is_valid_date(date):
    return not is_weekend(date) and not is_holiday(date)

# 현재 날짜가 유효한 날짜인지 확인
now = datetime.now(pytz.timezone('Asia/Seoul'))
if is_valid_date(now):
    print("현재 날짜는 주말과 공휴일이 아닙니다.")
else:
    print("현재 날짜는 주말 또는 공휴일입니다.")

위 예시 코드를 기반으로 여러분의 요구에 맞게 수정하여 사용할 수 있습니다.

결론

pytz를 사용하여 작업 예약에서 주말과 공휴일을 제외하는 방법에 대해 알아보았습니다. 이를 통해 작업 예약 시 정확하고 효율적인 스케줄링을 구현할 수 있습니다. 또한, pytz를 통해 시간대에 대한 다양한 작업도 수행할 수 있습니다.

참고 자료