calendar — General calendar-related functions

소스 코드: Lib/calendar.py


이 모듈을 사용하면 유닉스 cal 프로그램과 같은 달력을 출력할 수 있으며, 달력과 관련된 유용한 추가 함수를 제공합니다. 기본적으로, 이 달력은 월요일을 주의 첫째 날로 하고, 일요일을 마지막 날로 합니다 (유럽 관례). 주의 첫째 날을 일요일(6)이나 다른 요일로 설정하려면 setfirstweekday()를 사용하십시오. 날짜를 지정하는 매개 변수는 정수로 제공됩니다. 관련 기능에 대해서는, datetimetime 모듈도 참조하십시오.

이 모듈에 정의된 함수와 클래스는 이상적인 달력을 사용합니다, 양방향으로 무한정 확장된 현재 그레고리력. 이것은 Dershowitz와 Reingold의 저서 “Calendrical Calculations”에 나오는 “역산 그레고리(proleptic Gregorian)” 달력의 정의와 일치하며, 모든 계산의 기본 달력입니다. 0과 음의 연도는 ISO 8601 표준에 규정된 대로 해석됩니다. 0년은 BC 1년, -1년은 BC 2년 등입니다.

class calendar.Calendar(firstweekday=0)

Creates a Calendar object. firstweekday is an integer specifying the first day of the week. MONDAY is 0 (the default), SUNDAY is 6.

Calendar 객체는 포매팅을 위해 달력 데이터를 준비하는 데 사용할 수 있는 몇 가지 메서드를 제공합니다. 이 클래스는 스스로 포매팅을 수행하지 않습니다. 이는 서브 클래스의 역할입니다.

Calendar 인스턴스에는 다음과 같은 메서드가 있습니다:

iterweekdays()

한 주 동안 사용될 요일 번호의 이터레이터를 반환합니다. 이터레이터의 첫 번째 값은 firstweekday 프로퍼티 값과 같습니다.

itermonthdates(year, month)

year 연도의 month 월 (1–12) 동안의 이터레이터를 반환합니다. 이 이터레이터는 해당 월의 모든 날(datetime.date 객체로)과 완전한 주를 얻기 위해 필요한 해당 월의 시작일 전이나 해당 월의 종료일 이후의 모든 날을 반환합니다.

itermonthdays(year, month)

itermonthdates()와 유사하게 year 연도의 month 월 동안의 이터레이터를 반환하지만, datetime.date 범위로 제한되지 않습니다. 반환된 날은 단순히 월 중 날 번호입니다. 지정된 월 바깥에 있는 날의 경우, 날 번호는 0입니다.

itermonthdays2(year, month)

itermonthdates()와 유사하게 year 연도의 month 월 동안의 이터레이터를 반환하지만, datetime.date 범위로 제한되지 않습니다. 반환된 날은 월 중 날 번호와 요일 번호로 구성된 튜플입니다.

itermonthdays3(year, month)

itermonthdates()와 유사하게 year 연도의 month 월 동안의 이터레이터를 반환하지만, datetime.date 범위로 제한되지 않습니다. 반환된 날은 연도, 월 및 월 중 날 번호로 구성된 튜플입니다.

Added in version 3.7.

itermonthdays4(year, month)

itermonthdates()와 유사하게 year 연도의 month 월 동안의 이터레이터를 반환하지만, datetime.date 범위로 제한되지 않습니다. 반환된 날은 연도, 월, 월 중 날 및 요일 번호로 구성된 튜플입니다.

Added in version 3.7.

monthdatescalendar(year, month)

yearmonth 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 7개의 datetime.date 객체 리스트입니다.

monthdays2calendar(year, month)

yearmonth 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 날 번호와 요일 번호 튜플 7개의 리스트입니다.

monthdayscalendar(year, month)

yearmonth 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 날 번호 7개의 리스트입니다.

yeardatescalendar(year, width=3)

포매팅 준비된 지정된 연도의 데이터를 반환합니다. 반환 값은 월 행의 리스트입니다. 각 월 행에는 최대 width 월(기본값은 3)이 포함됩니다. 각 월은 4–6주를 포함하고, 각 주는 1–7일을 포함합니다. 날은 datetime.date 객체입니다.

yeardays2calendar(year, width=3)

포매팅 준비된 지정된 연도의 데이터를 반환합니다 (yeardatescalendar()와 유사합니다). 주 리스트의 항목은 날 번호와 요일 번호의 튜플입니다. 이달 밖의 날 번호는 0입니다.

yeardayscalendar(year, width=3)

포매팅 준비된 지정된 연도의 데이터를 반환합니다 (yeardatescalendar()와 유사합니다). 주 리스트의 항목은 날 번호입니다. 이달 밖의 날 번호는 0입니다.

class calendar.TextCalendar(firstweekday=0)

이 클래스는 평문 텍스트 달력을 생성하는 데 사용할 수 있습니다.

TextCalendar 인스턴스에는 다음과 같은 메서드가 있습니다:

formatmonth(theyear, themonth, w=0, l=0)

월의 달력을 여러 줄 문자열로 반환합니다. w가 제공되면, 가운데 정렬되는 날짜 열의 너비를 지정합니다. l이 제공되면, 각 주가 사용할 줄 수를 지정합니다. 생성자에 지정되거나 setfirstweekday() 메서드로 설정된 첫 번째 요일에 따라 다릅니다.

prmonth(theyear, themonth, w=0, l=0)

formatmonth()에서 반환한 월의 달력을 인쇄합니다.

formatyear(theyear, w=2, l=1, c=6, m=3)

전체 연도의 m-열 달력을 여러 줄 문자열로 반환합니다. 선택적 매개 변수 w, lc는 각각 날짜 열 너비, 주당 줄 수 및 월 열 사이의 스페이스 수입니다. 생성자에 지정되거나 setfirstweekday() 메서드로 설정된 첫 번째 요일에 따라 다릅니다. 달력을 생성할 수 있는 가장 빠른 연도는 플랫폼에 따라 다릅니다.

pryear(theyear, w=2, l=1, c=6, m=3)

formatyear()에서 반환 연도의 달력을 인쇄합니다.

class calendar.HTMLCalendar(firstweekday=0)

이 클래스는 HTML 달력을 생성하는 데 사용할 수 있습니다.

HTMLCalendar 인스턴스에는 다음과 같은 메서드가 있습니다:

formatmonth(theyear, themonth, withyear=True)

월의 달력을 HTML 테이블로 반환합니다. withyear가 참이면 연도가 헤더에 포함되고, 그렇지 않으면 월 이름 만 사용됩니다.

formatyear(theyear, width=3)

연도의 달력을 HTML 테이블로 반환합니다. width(기본값은 3)는 행 당 개월 수를 지정합니다.

formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

연도의 달력을 완전한 HTML 페이지로 반환합니다. width(기본값은 3)는 행 당 개월 수를 지정합니다. css는 사용할 캐스케이딩 스타일 시트의 이름입니다. 스타일 시트를 사용하지 않으면 None을 전달할 수 있습니다. encoding은 출력에 사용될 인코딩을 지정합니다 (기본값은 시스템 기본 인코딩입니다).

formatmonthname(theyear, themonth, withyear=True)

Return a month name as an HTML table row. If withyear is true the year will be included in the row, otherwise just the month name will be used.

HTMLCalendar에는 달력에서 사용하는 CSS 클래스를 사용자 정의하기 위해 재정의할 수 있는 다음과 같은 어트리뷰트가 있습니다:

cssclasses

각 요일에 사용되는 CSS 클래스 리스트. 기본 클래스 리스트는 다음과 같습니다:

cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]

각 날에 더 많은 스타일을 추가할 수 있습니다:

cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]

이 리스트의 길이는 7개의 항목임에 유의하십시오.

cssclass_noday

지난달이나 다음 달에 등장하는 요일의 CSS 클래스.

Added in version 3.7.

cssclasses_weekday_head

헤더 행에 있는 요일 이름에 사용되는 CSS 클래스 리스트. 기본값은 cssclasses와 같습니다.

Added in version 3.7.

cssclass_month_head

월 헤드 CSS 클래스 (formatmonthname() 에서 사용됩니다). 기본값은 "month"입니다.

Added in version 3.7.

cssclass_month

월 전체 테이블의 CSS 클래스 (formatmonth()에서 사용됩니다). 기본값은 "month"입니다.

Added in version 3.7.

cssclass_year

연도 전체 표의 CSS 클래스 (formatyear()에서 사용됩니다). 기본값은 "year"입니다.

Added in version 3.7.

cssclass_year_head

연도 전체의 테이블 헤드의 CSS 클래스 (formatyear()에서 사용됩니다). 기본값은 "year"입니다.

Added in version 3.7.

위에서 설명한 클래스 어트리뷰트의 이름은 단수이지만 (예를 들어 cssclass_month cssclass_noday), 단일 CSS 클래스를 스페이스로 구분된 CSS 클래스 목록으로 바꿀 수 있습니다. 예를 들면 다음과 같습니다:

"text-bold text-red"

다음은 HTMLCalendar를 사용자 정의하는 방법에 대한 예입니다:

class CustomHTMLCal(calendar.HTMLCalendar):
    cssclasses = [style + " text-nowrap" for style in
                  calendar.HTMLCalendar.cssclasses]
    cssclass_month_head = "text-center month-head"
    cssclass_month = "text-center month"
    cssclass_year = "text-italic lead"
class calendar.LocaleTextCalendar(firstweekday=0, locale=None)

This subclass of TextCalendar can be passed a locale name in the constructor and will return month and weekday names in the specified locale.

class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)

This subclass of HTMLCalendar can be passed a locale name in the constructor and will return month and weekday names in the specified locale.

참고

The constructor, formatweekday() and formatmonthname() methods of these two classes temporarily change the LC_TIME locale to the given locale. Because the current locale is a process-wide setting, they are not thread-safe.

간단한 텍스트 달력을 위해 이 모듈은 다음 함수를 제공합니다.

calendar.setfirstweekday(weekday)

매주 시작일을 weekday(0은 월요일, 6은 일요일)로 설정합니다. 편의를 위해 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAYSUNDAY 값이 제공됩니다. 예를 들어, 주의 첫 번째 날을 일요일로 설정하려면:

import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.firstweekday()

각 주를 시작하는 요일의 현재 설정을 반환합니다.

calendar.isleap(year)

year가 윤년이면 True를, 그렇지 않으면 False를 반환합니다.

calendar.leapdays(y1, y2)

y1에서 y2(우측 경계 제외) 범위에서 윤년의 수를 반환합니다, 여기서 y1y2는 연도입니다.

이 함수는 세기(century)의 변경을 포함하는 범위에서 작동합니다.

calendar.weekday(year, month, day)

year (1970–…), month (112), day (131)의 요일(0은 월요일)을 반환합니다.

calendar.weekheader(n)

약식 요일 이름이 포함된 헤더를 반환합니다. n은 한 주의 너비를 문자 수로 지정합니다.

calendar.monthrange(year, month)

지정된 yearmonth에 대해 월의 첫 번째 날의 요일과 월의 날 수를 반환합니다.

calendar.monthcalendar(year, month)

한 달의 달력을 나타내는 행렬을 반환합니다. 각 행은 한 주를 나타냅니다; 월 바깥의 날은 0으로 표시됩니다. setfirstweekday()로 설정하지 않는 한 각 주는 월요일에 시작합니다.

calendar.prmonth(theyear, themonth, w=0, l=0)

month()가 반환하는 월의 달력을 인쇄합니다.

calendar.month(theyear, themonth, w=0, l=0)

Returns a month’s calendar in a multi-line string using the formatmonth() of the TextCalendar class.

calendar.prcal(year, w=0, l=0, c=6, m=3)

calendar()에서 반환 한 연도 전체 달력을 인쇄합니다.

calendar.calendar(year, w=2, l=1, c=6, m=3)

Returns a 3-column calendar for an entire year as a multi-line string using the formatyear() of the TextCalendar class.

calendar.timegm(tuple)

time 모듈의 gmtime() 함수가 반환하는 것과 같은 시간 튜플을 취하고, 1970년의 시작과 POSIX 인코딩을 가정하는 해당 유닉스 타임스탬프 값을 반환하는 관련이 없지만 편리한 함수. 실제로, time.gmtime()timegm()은 서로의 역 함수입니다.

calendar 모듈은 다음 데이터 어트리뷰트를 내보냅니다:

calendar.day_name

A sequence that represents the days of the week in the current locale, where Monday is day number 0.

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
calendar.day_abbr

A sequence that represents the abbreviated days of the week in the current locale, where Mon is day number 0.

>>> import calendar
>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
calendar.MONDAY
calendar.TUESDAY
calendar.WEDNESDAY
calendar.THURSDAY
calendar.FRIDAY
calendar.SATURDAY
calendar.SUNDAY

Aliases for the days of the week, where MONDAY is 0 and SUNDAY is 6.

Added in version 3.12.

class calendar.Day

Enumeration defining days of the week as integer constants. The members of this enumeration are exported to the module scope as MONDAY through SUNDAY.

Added in version 3.12.

calendar.month_name

A sequence that represents the months of the year in the current locale. This follows normal convention of January being month number 1, so it has a length of 13 and month_name[0] is the empty string.

>>> import calendar
>>> list(calendar.month_name)
['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
calendar.month_abbr

A sequence that represents the abbreviated months of the year in the current locale. This follows normal convention of January being month number 1, so it has a length of 13 and month_abbr[0] is the empty string.

>>> import calendar
>>> list(calendar.month_abbr)
['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
calendar.JANUARY
calendar.FEBRUARY
calendar.MARCH
calendar.APRIL
calendar.MAY
calendar.JUNE
calendar.JULY
calendar.AUGUST
calendar.SEPTEMBER
calendar.OCTOBER
calendar.NOVEMBER
calendar.DECEMBER

Aliases for the months of the year, where JANUARY is 1 and DECEMBER is 12.

Added in version 3.12.

class calendar.Month

Enumeration defining months of the year as integer constants. The members of this enumeration are exported to the module scope as JANUARY through DECEMBER.

Added in version 3.12.

The calendar module defines the following exceptions:

exception calendar.IllegalMonthError(month)

A subclass of ValueError, raised when the given month number is outside of the range 1-12 (inclusive).

month

The invalid month number.

exception calendar.IllegalWeekdayError(weekday)

A subclass of ValueError, raised when the given weekday number is outside of the range 0-6 (inclusive).

weekday

The invalid weekday number.

더 보기

모듈 datetime

time 모듈과 유사한 기능을 가진 날짜와 시간에 대한 객체 지향 인터페이스.

모듈 time

저수준 시간 관련 함수.

Command-Line Usage

Added in version 2.5.

The calendar module can be executed as a script from the command line to interactively print a calendar.

python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]
                   [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
                   [year] [month]

For example, to print a calendar for the year 2000:

$ python -m calendar 2000
                                  2000

      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          1  2  3  4  5  6             1  2  3  4  5
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       6  7  8  9 10 11 12
10 11 12 13 14 15 16      14 15 16 17 18 19 20      13 14 15 16 17 18 19
17 18 19 20 21 22 23      21 22 23 24 25 26 27      20 21 22 23 24 25 26
24 25 26 27 28 29 30      28 29                     27 28 29 30 31
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       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  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          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      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             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31

The following options are accepted:

--help, -h

Show the help message and exit.

--locale LOCALE, -L LOCALE

The locale to use for month and weekday names. Defaults to English.

--encoding ENCODING, -e ENCODING

The encoding to use for output. --encoding is required if --locale is set.

--type {text,html}, -t {text,html}

Print the calendar to the terminal as text, or as an HTML document.

year

The year to print the calendar for. Must be a number between 1 and 9999. Defaults to the current year.

month

The month of the specified year to print the calendar for. Must be a number between 1 and 12, and may only be used in text mode. Defaults to printing a calendar for the full year.

Text-mode options:

--width WIDTH, -w WIDTH

The width of the date column in terminal columns. The date is printed centred in the column. Any value lower than 2 is ignored. Defaults to 2.

--lines LINES, -l LINES

The number of lines for each week in terminal rows. The date is printed top-aligned. Any value lower than 1 is ignored. Defaults to 1.

--spacing SPACING, -s SPACING

The space between months in columns. Any value lower than 2 is ignored. Defaults to 6.

--months MONTHS, -m MONTHS

The number of months printed per row. Defaults to 3.

HTML-mode options:

--css CSS, -c CSS

The path of a CSS stylesheet to use for the calendar. This must either be relative to the generated HTML, or an absolute HTTP or file:/// URL.