calendar
— General calendar-related functions¶
소스 코드: Lib/calendar.py
이 모듈을 사용하면 유닉스 cal 프로그램과 같은 달력을 출력할 수 있으며, 달력과 관련된 유용한 추가 함수를 제공합니다. 기본적으로, 이 달력은 월요일을 주의 첫째 날로 하고, 일요일을 마지막 날로 합니다 (유럽 관례). 주의 첫째 날을 일요일(6)이나 다른 요일로 설정하려면 setfirstweekday()
를 사용하십시오. 날짜를 지정하는 매개 변수는 정수로 제공됩니다. 관련 기능에 대해서는, datetime
과 time
모듈도 참조하십시오.
이 모듈에 정의된 함수와 클래스는 이상적인 달력을 사용합니다, 양방향으로 무한정 확장된 현재 그레고리력. 이것은 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
is0
(the default),SUNDAY
is6
.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)¶
year의 month 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 7개의
datetime.date
객체 리스트입니다.
- monthdays2calendar(year, month)¶
year의 month 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 날 번호와 요일 번호 튜플 7개의 리스트입니다.
- monthdayscalendar(year, month)¶
year의 month 월에 있는 주의 리스트를 전체 주로 반환합니다. 주는 날 번호 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, l 및 c는 각각 날짜 열 너비, 주당 줄 수 및 월 열 사이의 스페이스 수입니다. 생성자에 지정되거나
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
,SATURDAY
및SUNDAY
값이 제공됩니다. 예를 들어, 주의 첫 번째 날을 일요일로 설정하려면:import calendar calendar.setfirstweekday(calendar.SUNDAY)
- calendar.firstweekday()¶
각 주를 시작하는 요일의 현재 설정을 반환합니다.
- calendar.leapdays(y1, y2)¶
y1에서 y2(우측 경계 제외) 범위에서 윤년의 수를 반환합니다, 여기서 y1과 y2는 연도입니다.
이 함수는 세기(century)의 변경을 포함하는 범위에서 작동합니다.
- calendar.weekday(year, month, day)¶
year (
1970
–…), month (1
–12
), day (1
–31
)의 요일(0
은 월요일)을 반환합니다.
- calendar.weekheader(n)¶
약식 요일 이름이 포함된 헤더를 반환합니다. n은 한 주의 너비를 문자 수로 지정합니다.
- calendar.monthrange(year, month)¶
지정된 year와 month에 대해 월의 첫 번째 날의 요일과 월의 날 수를 반환합니다.
- calendar.monthcalendar(year, month)¶
한 달의 달력을 나타내는 행렬을 반환합니다. 각 행은 한 주를 나타냅니다; 월 바깥의 날은 0으로 표시됩니다.
setfirstweekday()
로 설정하지 않는 한 각 주는 월요일에 시작합니다.
- calendar.month(theyear, themonth, w=0, l=0)¶
Returns a month’s calendar in a multi-line string using the
formatmonth()
of theTextCalendar
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 theTextCalendar
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
is0
andSUNDAY
is6
.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
throughSUNDAY
.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
is1
andDECEMBER
is12
.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
throughDECEMBER
.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.
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]
[-f FIRST_WEEKDAY] [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.
- --first-weekday FIRST_WEEKDAY, -f FIRST_WEEKDAY¶
The weekday to start each week. Must be a number between 0 (Monday) and 6 (Sunday). Defaults to 0.
Added in version 3.13.
- year¶
The year to print the calendar for. 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.