본문 바로가기

카테고리 없음

파이썬 - 매월 둘째주 목요일 구하기 (옵션만기일, 수능)

파이썬으로 매주 n번째의 x요일을 구해야 하는 경우가 있다.

 

한국거래소 옵션만기일은 매월 2번째주 목요일이다.

수능의 경우 11월 둘째주 목요일이다.

 

매월 옵션만기일 및 수능의 날짜를 구하는 방법은 아래와 같다. 

from datetime import datetime

# 월요일은 is 0, 목용일은 is 3
# helper 함수 추가
def nth_weekday(the_date, nth_week, week_day):
    temp = the_date.replace(day=1)
    adj = (week_day - temp.weekday()) % 7
    temp += timedelta(days=adj)
    temp += timedelta(weeks=nth_week-1)
    return temp

# test = nth_weekday(datetime(2021,9,10), 2, 3)

# 옵션 만기일 구하기
def get_recent_due(mydate:datetime)->datetime:
    # get 2nd thursday of the same month
    thismonth_duedate = nth_weekday(mydate, 2, 3)
    # in case today already passed the duedate (10/15) -> get nextmonth_duedate
    if mydate <= thismonth_duedate:
        return thismonth_duedate
    elif mydate > thismonth_duedate :
        nextmonth_duedate = nth_weekday(mydate+relativedelta(months=1),2, 3)
        return nextmonth_duedate
 
 
# 특정 해의 수능일을 구하기
def get_ksat_date(year) -> datetime:
	mydate = datetime(year,11,1)
    result = nth_weekday(mydate, 2, 3)
    return result