파이선에서 날짜에 대한 연산을 도와주는 calendar라는 모듈이다. 현실세계의 날짜 연산에서 사용될 수 있는 계산 함수들을 제공한다. 하나하나 알아보자
Calendar 객체
모든 날짜 연산은 캘린더 객체에서 이루어 진다. 객체는 다음과 같이 생성한다.
>>> my_cal = calendar.Calendar()
### Calendar(firstweekday=0)로 인자지정이 가능하다. firstweekday는 언제가 그 주의 시작요일인지 정하는 것이다)
Calendar객체가 제공하는 연산은 다음과 같다.
- iterweekdays() : 0~6까지의 요일 인덱스를 담고 있는 iterator를 반환한다. firstweekday가 지정되어있으면 시작 순서가 바뀐다.
- itermonthdays(year,month) : year년도의 month동안의 iterator를 반환한다. 그니까 itermonthdays(2020,12)면 2020년 12월의 일을 포함한 iterator를 반환하는 건데, 달력에 표기하기 위한 만큼의 넘어가는주와 넘어오는주를 포함해서 반환한다. 그때 값은 0이다.
- itermonthdays2(year,month) : itermonthdays와 같은 범위이나, (일, 요일)의 튜플형태의 iterator를 반환한다.
- itermonthdays3(year,month) : itermonthdays와 같은 범위이나, (년, 월, 일)의 튜플형태의 iterator를 반환한다.
- itermonthdays4(year,month) : itermonthdays와 같은 범위이나, (년, 월, 일, 요일)의 튜플형태의 iterator를 반환한다.
- monthdatescalendar(year,month) : itermonthdays와 같은 범위이나, 매일매일에 대한 datetime.date객체를 리스트로 반환한다.
- monthdays2calendar(year,month) : itermonthdays와 같은 범위이나, 하루하루는 (일, 요일)의 튜플로, 주 단위로 리스트로 반환한다.
- monthdayscalendar(year,month) : itermonthdays와 같은 범위이나, 주 단위 리스트로 반환한다
- yeardatescalendar(year,width=3) : 연도에 대한 매일매일을 datetime.date객체로 월 단위 리스트로 반환한다. 이때 한 리스트원소에 얼만큼의 월이 들어갈지가 width이다.
- yeardays2calendar(year,width=3) : 위와 유사하나 datetime.date객체는 아니고 요일이 포함된 튜플을 반환한다.
- yeardayscalendar(year.width=3) : 위와 유사하나 datetime.date객체는 아니고 날짜만 해당하는 리스트를 반환한다.
TextCalendar 객체
Calendar는 숫자와 객체로 이루어져 있어 가시성이 떨어진다. 조금 보기 쉬운 표현을 위해서 TextCalendar라는 객체가 존재한다.
>>> my_cal = calendar.TextCalendar()
### TextCalendar(firstweekday=0)로 인자지정가능하다. firstweekday는 어디가 요일의 시작일지 이다.
TextCalendar 객체가 제공하는 연산은 다음과 같다.
- formatmonth(theyear,themonth,w=0,l=0) : 해당 월의 달력을 출력한다. w, l로 달력 크기 지정을 한다.
- prmonth(theyear,themonth,w=0,l=0) : formatmonth의 결과를 인쇄한다.
- formatyear(theyear,w=2,l=1,c=6,m=3) : 해당 년도의 달력을 출력한다. w,l로 달력의 크기를, c로 월 사이사이의 공간의 크기를, m으로 몇 열로 출력할지를 정한다.
- pryear(theyear,w=2,l=1,c=6,m=3) : formatyear의 결과를 인쇄한다.
HTMLCalendar 객체
HTMLCalendar은 HTML에서 사용할 수 있게끔 HTML 태그를 붙여준다.
>>> my_cal = calendar.HTMLCalendar()
### HTMLCalendar(firstweekday=0)로 인자지정가능하다. firstweekday는 어디가 요일의 시작일지 이다.
TextCalendar 객체가 제공하는 연산은 다음과 같다.
- formatmonth(theyear,themonth,withyear=True) : 월의 달력을 html Table로 반환한다. withyear의 설정으로 연도를 헤더에 표현할지를 선택할 수 있다.
- formatyear(theyear,width=3) : 연도의 달력을 html Table로 반환한다. width는 행에 얼만큼의 월이 들어 갈지 이다.
- formatyearpage(theyear,width=3,css='calendar.css',encoding=True) : 연도의 달력을 완전한 html로 생성한다. css를 지정할 수 있다.
* TextCalendar에는 css를 재정의 할 수 있도록 여러가지 Attrib도 있으니 사용이 필요하다면 포스팅 끝의 공식 문서를 참고바란다.
정적 매서드
다음은 calendar에서 제공하는 정적 매서드이다. Calendar.매서드명 으로 객체 생성 없이 이용 가능하다.
- setfirstweekday(weekday) : 현재 import된 모듈의 calendar weekday를 weeday로 고정한다 주의 첫요일이 바뀐다. calendar에는 리터럴로 calendar.MONDAY등을 제공하니 사용 바란다.
- firstweekday() : 요일의 현재 설정을 반환한다.
- leapdays(y1,y2) : y1년과 y2년 사이의 윤년의 수를 반환한다.
- weekday(year,month,day) : year년 month월 day일의 요일을 반환한다.
- weekheader(n) : 요일의 헤더를 반환한다. n은 헤더의 길이이다(1 : "F", 3 : "Fri" 등)
- monthrange(year,month) : year년 month월의 첫날의 요일과 월의 일수를 반환한다.
- monthcalendar(year,month) : year년 month의 행렬을 반환한다.
- month(theyear,themonth,w=0,l=0) : TextCalendar의 formatmonth를 바로 이용 가능하게 한다.
- calendar(year,w=0,l=0,c=6,m=3) : TextCalendar의 formatyear를 바로 이용 가능하게 한다.
어트리뷰트
다음은 Calendar가 가진 클래스 어트리뷰트이다.
- calendar.day_name : 현재 로케일의 요일을 나타내는 배열이다.
- calendar.day_abbr : 현재 로케일의 약식 요일을 나타내는 배열이다.
- calendar.month_name : 현재 로케일의 연중 월을 나타낸다.
- calendar.mont_abbr : 현재 로케일의 연중 월을 약식으로 나타낸다.
* 출처 : https://docs.python.org/ko/3/library/calendar.html
정적 매서드의 프린팅 함수는 제외하고 기술했다. 참고하도록 하자
'Python > Python 모듈탐구' 카테고리의 다른 글
[Python] - 모듈탐구 pyautogui - Python 폴터가이스트 (8) | 2021.06.30 |
---|---|
[Python] - 모듈탐구 bz2 - 바이트 압축 활용하기 (0) | 2021.05.19 |
[Python] - 모듈탐구 getmac - Python으로 MAC주소 확인하기 (0) | 2021.04.27 |
[Python] - 모듈탐구 pydoc - Python의 백과사전 (0) | 2021.04.25 |
[Python] - 모듈탐구 webbrowser - 인터넷세상에 온걸 환영해 (0) | 2021.04.25 |