[python] pytz를 사용하여 특정 날짜 범위의 주말 수 계산하기

파이썬에서 날짜와 시간을 다루는 작업은 매우 흔한 일입니다. 특히 특정 날짜 범위의 주말 수를 계산하는 경우가 많습니다. 이번 포스트에서는 pytz 라이브러리를 사용하여 특정 날짜 범위의 주말 수를 계산하는 방법에 대해 알아보겠습니다.

pytz란?

pytz는 파이썬에서 시간대 정보를 다루기 위한 라이브러리입니다. 이 라이브러리를 사용하면 표준 시간대와 지역별 시간 차이를 쉽게 처리할 수 있습니다.

pytz를 사용하여 주말 수를 계산하기 위해 다음과 같은 절차를 따릅니다:

  1. 시작 날짜와 종료 날짜를 입력받습니다.
  2. 입력받은 날짜 범위에서 주말인 날짜를 찾습니다.
  3. 주말인 날짜들의 개수를 계산하여 반환합니다.

아래는 주말 수를 계산하는 함수의 예시 코드입니다.

from datetime import timedelta, date
import pytz

def get_weekend_count(start_date, end_date):
    weekend_count = 0
    
    # start_date부터 end_date까지의 날짜를 하루씩 증가시키면서 주말인지 확인합니다.
    for single_date in daterange(start_date, end_date + timedelta(days=1)):
        # datetime 형식의 날짜를 pytz의 timezone으로 변환합니다.
        date_time = pytz.utc.localize(single_date)
        
        # 주말인지 확인합니다. (월요일 = 0, 일요일 = 6)
        if date_time.weekday() in [5, 6]:
            weekend_count += 1
    
    return weekend_count

# 해당 날짜 범위의 주말 수를 계산합니다.
start_date = date(2021, 1, 1)
end_date = date(2021, 12, 31)
weekend_count = get_weekend_count(start_date, end_date)

print("주말 개수:", weekend_count)

위의 코드에서는 daterange 함수를 사용하여 시작 날짜부터 종료 날짜까지의 모든 날짜를 생성합니다. 그리고 pytz.utc.localize 함수를 사용하여 날짜를 UTC 시간대에 있는 datetime 객체로 변환합니다. weekday() 메서드를 사용하여 해당 날짜가 주말인지 확인하고, 주말이면 weekend_count 변수를 증가시킵니다.

실행 결과로 시작 날짜와 종료 날짜 사이에 있는 주말의 개수가 출력됩니다.

결론

pytz 라이브러리를 사용하면 파이썬에서 날짜와 시간을 다룰 때 표준 시간대와 지역별 시간 차이를 쉽게 처리할 수 있습니다. 이번 포스트에서는 pytz를 사용하여 특정 날짜 범위의 주말 수를 계산하는 방법을 알아보았습니다. 이를 응용하여 다양한 시간 관련 작업을 손쉽게 수행할 수 있습니다.

참고 자료