달력

3

« 2024/3 »

  • 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

'다음달 구하기'에 해당되는 글 1

  1. 2021.09.07 파이썬 캘린더 다음달 출력, calendar next month 1
728x90
반응형

파이썬 datetime의 timedelta 에는 day 를 더해서 몇일 후의 날짜를 구할 수는 있지만,

다음달을 계산해주지는 않는다.

 

timedelta 를 편법적으로 사용해서 하는 방법도 있지만,

calendar 함수를 사용하면 아주 편하게 return 받을 수 있다.

 

calendar 함수는 기본함수이므로 바로 import를 해준다.

import calendar

기본 문서는 아래 링크를 통해서 확인 할 수 있다.

calendar — General calendar-related functions — Python 3.9.7 documentation

 

calendar — General calendar-related functions — Python 3.9.7 documentation

calendar — General calendar-related functions Source code: Lib/calendar.py This module allows you to output calendars like the Unix cal program, and provides additional useful functions related to the calendar. By default, these calendars have Monday as

docs.python.org

 

여기서 몇 가지의 예제를 살펴보면

내가 가장 찾고 있었던 기능인 다음달 계산은 nextmonth 함수와 연도, 달..

입력으로 다음달을 계산해 준다.

calendar.nextmonth(2021, 12)

위와 같이 한줄로 바로 알아낼수가 있다. 하지만!!!!!

여기서 주의할 점은..

그럴리는 잘 없지만 잘못된 달을 입력하게 되면 이런식으로 리턴받게 된다.

calendar.nextmonth(2021, 13)

이건 내부함수에서 볼 수 있듯이 12만 인식을 하고 있다.

def _nextmonth(year, month):
    if month == 12:
        return year+1, 1
    else:
        return year, month+1

그래서 12이상으로 안 들어가도록 미리 input limit 을 준다던지 하는식으로 코딩해줘야 한다.

 

그외에도 아래와 같이 다양하게 활용할 수 있다.

* 캘린더 호출

calendar.calendar(2021)

이렇게 호출하면 되지만, 주피터 노트북에서는 print를 붙여주지 않으면 이런식으로 나온다.

따라서 호출할때는 print( ) 와 함께

print(calendar.calendar(2021))

 

* 원하는 달 호출

calendar.prmonth(2021, 9)

 

* monthrange 를 쓸 경우에는 그 달의 시작하는 1일의 요일과, 마지막날의 날짜를 리턴해준다.

calendar.monthrange(2021, 9)

(2, 30)

에서 2는 0(월), 1(화), 2(수), 3(목), 4(금), 5(토), 6(일).. 을 각각 가지고 있으므로

수요일로 시작한다는 것을 알 수 있고,

마지막날은 30일..리턴

 

* 요일 알기

calendar.weekday(2021, 9, 4)

5가 리턴 되었으니 토요일 인것을 알 수가 있다.

 

* 그 달을 리스트형식으로 리턴

calendar.monthcalendar(2021,9)

 

위와 같이 다양하게 활용할 수 있다.

calendar 함수와 datetime 함수를 이용한다면 다양한 날짜에 관한 사항들을 활용할 수 있을 것이다.

728x90
반응형
:
Posted by 패치#노트