Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 calendar 모듈 완벽 가이드: 연간·월간 달력 출력부터 윤년 계산까지

파이썬의 calendar 모듈은 날짜와 달력과 관련된 거의 모든 기능을 처리할 수 있는 표준 라이브러리입니다. 다양한 내장 함수를 제공하여 프로그램 안에서 달력을 손쉽게 생성하고 활용할 수 있기 때문에 실무에서도 매우 폭넓게 사용되는 모듈 중 하나입니다.

연간 달력 한 번에 출력하기

calendar.calendar() 함수에 연도를 인자로 전달하면 해당 연도의 전체 달력(12개월)이 한꺼번에 출력됩니다.

예제

import calendar
print(calendar.calendar(2019))

실행 결과

위 코드를 실행하면 아래와 같이 2019년 전체 달력이 출력됩니다.

                                  2019
      January                     February                     March
Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                            1  2  3                    1  2  3
 7  8  9 10 11 12 13         4  5  6  7  8  9 10         4  5  6  7  8  9 10
14 15 16 17 18 19 20        11 12 13 14 15 16 17        11 12 13 14 15 16 17
21 22 23 24 25 26 27        18 19 20 21 22 23 24        18 19 20 21 22 23 24
28 29 30 31                 25 26 27 28                 25 26 27 28 29 30 31

       April                        May                         June
Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                 1  2  3  4  5                          1  2
 8  9 10 11 12 13 14         6  7  8  9 10 11 12         3  4  5  6  7  8  9
15 16 17 18 19 20 21        13 14 15 16 17 18 19        10 11 12 13 14 15 16
22 23 24 25 26 27 28        20 21 22 23 24 25 26        17 18 19 20 21 22 23
29 30                       27 28 29 30 31              24 25 26 27 28 29 30

        July                       August                    September
Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                    1  2  3  4                                1
 8  9 10 11 12 13 14         5  6  7  8  9 10 11         2  3  4  5  6  7  8
15 16 17 18 19 20 21        12 13 14 15 16 17 18         9 10 11 12 13 14 15
22 23 24 25 26 27 28        19 20 21 22 23 24 25        16 17 18 19 20 21 22
29 30 31                    26 27 28 29 30 31           23 24 25 26 27 28 29 30

      October                     November                    December
Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su        Mo Tu We Th Fr Sa Su
          1  2  3  4  5  6                    1  2  3                             1
 7  8  9 10 11 12 13         4  5  6  7  8  9 10         2  3  4  5  6  7  8
14 15 16 17 18 19 20        11 12 13 14 15 16 17         9 10 11 12 13 14 15
21 22 23 24 25 26 27        18 19 20 21 22 23 24        16 17 18 19 20 21 22
28 29 30 31                 25 26 27 28 29 30           23 24 25 26 27 28 29
                                                        30 31

특정 월의 달력만 출력하기

전체 달력이 아니라 특정 월만 필요하다면 calendar.month() 함수에 연도와 월을 인자로 전달하면 됩니다.

예제

import calendar
print(calendar.month(2019, 7))

실행 결과

위 코드를 실행하면 2019년 7월의 달력만 깔끔하게 출력됩니다.

     July 2019
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

한 달의 일수와 시작 요일 구하기

monthrange() 함수를 사용하면 특정 월의 총 일수를 알 수 있습니다. 이 함수는 두 개의 값을 튜플(tuple) 형태로 반환하는데, 첫 번째 값은 그 달 첫째 날의 요일 번호(월요일 = 0, 화요일 = 1, … 일요일 = 6)이고, 두 번째 값은 그 달의 총 일수입니다.

아래 예제에서는 2019년 2월의 일수와 첫날의 요일 번호를 함께 확인해 보겠습니다.

예제

import calendar
print(calendar.monthrange(2019, 2))

실행 결과

(4, 28)

결과를 해석해 보면, 2019년 2월 1일은 금요일(요일 번호 4)이었고, 2월은 총 28일까지 있다는 의미입니다.

윤년(leap year) 판별하기

isleap() 함수는 주어진 연도가 윤년인지 여부를 True 또는 False로 반환합니다. 또한 leapdays() 함수를 사용하면 두 연도 사이 범위에 윤년이 몇 번 있는지 개수를 계산할 수 있습니다.

아래 예제에서는 2019년과 2020년이 각각 윤년인지 확인하고, 2000년부터 2020년 사이에 윤년이 몇 번 있는지 구해 보겠습니다.

예제

import calendar
print(calendar.isleap(2019))
print(calendar.isleap(2020))
print(calendar.leapdays(2000, 2020))

실행 결과

False
True
5

2019년은 윤년이 아니고(False), 2020년은 윤년(True)이며, 2000년부터 2020년 사이에는 총 5번의 윤년이 있었다는 것을 확인할 수 있습니다.

마무리

이처럼 파이썬의 calendar 모듈은 별도의 외부 라이브러리 설치 없이도 연간·월간 달력 출력, 일수 계산, 윤년 판별 등 날짜 관련 작업을 간편하게 처리할 수 있습니다. datetime 모듈과 함께 활용하면 더욱 강력한 날짜 처리 로직을 구현할 수 있으니 참고해 보시기 바랍니다.