파이썬, 날짜의 요일을 빠르게 계산하는 함수
Zeller 합동식을 이용한 빠른 요일 확인 함수입니다.
[소스 코드]
import math
def dayofweek(y, m, d):
"""
주어진 년(y), 월(m), 일(d)에 해당하는 요일을 계산합니다.
Args:
y: 년도 (정수)
m: 월 (1 ~ 12, 정수)
d: 일 (정수)
Returns:
요일 정수(0:일요일, 1:월요일, ..., 6:토요일)와 요일 첫 글자(한글)
"""
t = (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4) # 월별 오프셋 테이블
days = ("일", "월", "화", "수", "목", "금", "토")
if m < 3: # 1월과 2월은 이전 해의 13월, 14월로 취급
y -= 1
# Zeller 합동식 계산
result = (y + y//4 - y//100 + y//400 + t[m-1] + d) % 7
return result, days[result]
if __name__ == "__main__":
# 사용 예제 1 ------------------------
year = 2025
month = 4
day = 16
weekday_num, weekday = dayofweek(year, month, day) # 3, '수'
print(f"{year}년 {month}월 {day}일은 {weekday+"요일"}입니다. (결과: {weekday_num})")
# 사용 예제 2 ------------------------
year = 2025
month = 12
day = 25
weekday_num, weekday = dayofweek(year, month, day) # 4, '목'
print(f"{year}년 {month}월 {day}일은 {weekday+"요일"}입니다. (결과: {weekday_num})")
[실행 결과]
2025년 4월 16일은 수요일입니다. (결과: 3)
2025년 12월 25일은 목요일입니다. (결과: 4)
반응형
'Python 기초' 카테고리의 다른 글
Python, 패키지/가상환경 관리 도구 UV (0) | 2025.04.03 |
---|---|
파이썬, dataclass 사용 예제 (0) | 2025.02.15 |
파이썬, groupby (from itertools) 예제 (0) | 2025.02.05 |
클로저, 람다를 이용한 validator 파이썬 예제 (0) | 2025.01.29 |
파이썬, 랜덤 값 다양한 기능 예제 (0) | 2025.01.26 |