[파이썬] 날짜와 시간의 주기 요일 계산

소개

날짜와 시간은 많은 프로그래밍 작업에서 중요한 역할을 합니다. 특히 특정 날짜의 요일을 계산하는 것은 일정 관리나 시계와 같은 애플리케이션에서 필수적입니다. 이 글에서는 Python을 사용하여 날짜와 시간의 주기 요일을 계산하는 방법을 살펴보겠습니다.

datetime 모듈

Python의 datetime 모듈은 날짜와 시간을 다루는 다양한 클래스와 함수를 제공합니다. 이 모듈을 사용하면 특정 날짜와 시간을 생성하고 조작할 수 있습니다.

import datetime

# 오늘 날짜 가져오기
today = datetime.date.today()
print("오늘 날짜:", today)

# 현재 시간 가져오기
now = datetime.datetime.now()
print("현재 시간:", now)

요일 계산

datetime 모듈을 사용하여 특정 날짜의 요일을 계산할 수 있습니다. 동일한 주기의 요일을 계산하기 위해서는 날짜 정보를 사용해야 합니다.

import datetime

def get_weekday(date):
    weekdays = ['월', '화', '수', '목', '금', '토', '일']
    weekday = date.weekday()  # 0부터 6까지의 값을 반환합니다.
    return weekdays[weekday]

# 오늘 날짜의 요일 계산
today = datetime.date.today()
weekday = get_weekday(today)
print("오늘 요일:", weekday)

주기 요일 계산

주기 요일은 특정 날짜로부터 얼마만큼 떨어진 요일을 계산하는 것을 말합니다. 예를 들어 “다음 주 월요일”이나 “매월 3번째 금요일”과 같은 패턴입니다. 이러한 요일을 계산하기 위해 relativedelta 클래스를 사용할 수 있습니다.

from datetime import datetime
from dateutil.relativedelta import relativedelta

def get_next_weekday(original_date, target_weekday):
    weekdays = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
    original_weekday = original_date.weekday()
    target_weekday = weekdays.index(target_weekday.lower())  # 입력된 문자열을 소문자로 변환한 후, 요일 리스트에서의 위치를 가져옵니다.
    
    days_until_target = (target_weekday - original_weekday + 7) % 7
    target_date = original_date + relativedelta(days=days_until_target)
    
    return target_date

# 다음 주 수요일 계산
today = datetime.now()
next_wednesday = get_next_weekday(today, 'wed')
print("다음 주 수요일:", next_wednesday)

# 매월 3번째 금요일 계산
current_month = today.month
third_friday = get_next_weekday(today.replace(day=1), 'fri') + relativedelta(weeks=2)
print("매월 3번째 금요일:", third_friday)

위의 예제 코드에서는 get_next_weekday 함수를 사용하여 다음 주 중 특정 요일을 계산하고 있습니다. relativedelta를 사용하여 날짜를 변경하고, 요일과 월 등을 조작할 수 있습니다.

결론

Python의 datetime 모듈과 relativedelta 클래스를 사용하면 날짜와 시간의 주기 요일을 쉽게 계산할 수 있습니다. 이를 사용하여 프로그램에서 특정 날짜와 시간을 다루는 작업을 보다 효율적으로 수행할 수 있습니다.