Python 윤년 계산 isleap, leapdays 사용 방법

파이썬 표준 라이브러리인 calendar 모듈에 윤년을 판정할 수 있는 함수가 있습니다.

일반적으로 윤년을 계산하는 방법으로 다음과 같은 식이 있습니다.

1. 연수가 4로 나누어 떨어지는 해는 윤년
2. 연수가 4, 100으로 나누어 떨어지는 해는 평년
3. 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년

wikipedia

 

계산 로직을 따로 작성해 주지 않아도 isleap() 사용해 윤년인지 아닌지 판단을 할 수 있습니다.

import calendar

print(calendar.isleap(2019))
# False

print(calendar.isleap(2020))
# True

 

2019년은 평년이기 때문에 False를 2020년은 윤년이기 때문에 True를 반환합니다.

기간을 설정해 윤년이 몇 번 있는지 반환해 주는 함수도 있습니다.

calendar.leapdays(y1, y2)

 

leapdays()에는 시작 연도(y1)와 종료 연도(y2)를 설정합니다.

시작 연도(y1) ≦ x < 종료 연도(y2)로 종료 연도인 y2는 포함되지 않습니다.

import calendar

print(calendar.leapdays(2019, 2030))
# 3

print(calendar.leapdays(2019, 2020))
# 0

 

지정한 연도에서 윤년이 몇 번 있는지 반환합니다.

만약 지정한 연도에서 윤년이 해당되는 연도를 취득하고 싶은 경우에는 range와 isleap를 사용해 취득할 수 있습니다.

import calendar

print([y for y in range(2019, 2030) if calendar.isleap(y)])
# [2020, 2024, 2028]

 

표준 라이브러리인 calendar 모듈을 사용해 윤년을 판정하고 취득하는 방법을 알아봤습니다.

댓글