[Python] 27. 주차(weeknum)와 요일(weekday) 정보로 날짜 구하기

주차(weeknum)와 요일(weekday) 정보만으로 년, 월, 일을 구하려면 기준 날짜를 알고 있어야 합니다. 이 기준 날짜는 연도의 시작일인 1월 1일로 설정할 수 있습니다. 다음은 주차와 요일 정보로 년, 월, 일을 계산하는 방법에 대한 설명과 예제 코드입니다.

주차(weeknum)와 요일(weekday) 정보 얻기

먼저, 주차와 요일 정보를 얻어야 합니다. 1월 1일을 기준으로 주차와 요일을 얻을 수 있습니다.

import datetime

# 기준 날짜 (1월 1일)
base_date = datetime.date(today.year, 1, 1)

# 주차 정보 얻기 (주차, 요일 번호)
week_info = base_date.isocalendar()
week_number = week_info[1]  # 주차
day_of_week = week_info[2]  # 요일 번호 (1: 월요일, 2: 화요일, ..., 7: 일요일)

주차와 요일 정보를 이용한 년, 월, 일 계산

주어진 주차와 요일 정보를 기준으로 년, 월, 일을 계산합니다.

# 목표 주차와 요일 (예: 5주차의 화요일)
target_week = 5
target_day_of_week = 2  # 화요일

# 현재 주차와 요일 정보
week_info = base_date.isocalendar()
current_week_number = week_info[1]
current_day_of_week = week_info[2]

# 목표 날짜 찾기
while current_week_number != target_week or current_day_of_week != target_day_of_week:
    base_date += datetime.timedelta(days=1)  # 하루씩 다음 날짜로 이동
    week_info = base_date.isocalendar()
    current_week_number = week_info[1]
    current_day_of_week = week_info[2]

# 찾은 날짜에서 년, 월, 일 추출
target_year = base_date.year
target_month = base_date.month
target_day = base_date.day

예제 (1월 1일 기준)

예를 들어, 1월 1일을 기준으로 5주차의 화요일을 구하려면 다음과 같이 코드를 작성할 수 있습니다.

import datetime

# 기준 날짜 (1월 1일)
base_date = datetime.date(2023, 1, 1)

# 목표 주차와 요일
target_week = 5
target_day_of_week = 2  # 화요일

# 현재 주차와 요일 정보
week_info = base_date.isocalendar()
current_week_number = week_info[1]
current_day_of_week = week_info[2]

# 목표 날짜 찾기
while current_week_number != target_week or current_day_of_week != target_day_of_week:
    base_date += datetime.timedelta(days=1)  # 하루씩 다음 날짜로 이동
    week_info = base_date.isocalendar()
    current_week_number = week_info[1]
    current_day_of_week = week_info[2]

# 찾은 날짜에서 년, 월, 일 추출
target_year = base_date.year
target_month = base_date.month
target_day = base_date.day

이렇게 하면 target_year, target_month, target_day에는 2023년 1월 31일(5주차의 화요일)에 해당하는 년, 월, 일 값이 저장됩니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤