테스트 사이트 - 개발 중인 베타 버전입니다

파이썬 날짜코드 질문

신몰 4년 전 조회 2,795

 https://stackoverflow.com/questions/546321/how-do-i-calculate-the-date-six-months-from-the-current-date-using-the-datetime?page=2&tab=votes#tab-top" target="_blank">https://stackoverflow.com/questions/546321/how-do-i-calculate-the-date-six-months-from-the-current-date-using-the-datetime?page=2&tab=votes#tab-top

 

---------------------------------------------------

from datetime import date

 

def after_month(given_date, month):

    yyyy = int(((given_date.year * 12 + given_date.month) + month)/12)

    mm = int(((given_date.year * 12 + given_date.month) + month)%12)

 

    if mm == 0:

        yyyy -= 1

        mm = 12

    return given_date.replace(year=yyyy, month=mm)

 

 print(next_date, end = ' ')

-----------------------------------------------------

링크에서 처럼 현재날짜를 지정하여 입력하고 한달후를 출력하고 싶으면 위코드에 무엇을 추가하고 수정해줘야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

I
4년 전

안녕하세요?

 

datetime.date로 해결하려면 2월 및 윤년과 관련하여 복잡할 것 같아요~

 

올려주신 방식과 유사하게 해결하면 다음과 같이 작성할 수 있겠네요!

 

</p>

<p>from datetime import date</p>

<p> </p>

<p>def addMonth(d):</p>

<p>    newmonth = (d.month % 12) + 1</p>

<p>    newyear  = int(d.year + (d.month / 12))</p>

<p>    return date(newyear, newmonth, d.day)</p>

<p> </p>

<p>today = date.today()</p>

<p>print(addMonth(today))</p>

<p>

 

그런데 위 스크립트에서 현재 날짜가 2019. 1. 31.라면 에러가 발생합니다 ㅠㅠ

 

따라서 별도의 모듈을 활용하시는게 수월하실거에요~!

 

 

우선 가장 간단하게 작성하려면 relativedelta 모듈을 사용하시면 되어요~

 

이 모듈은 어떠한 경우에도 잘 작동하도록 되어있어요 ^^

 

</p>

<p>from datetime import date</p>

<p>from dateutil.relativedelta import relativedelta</p>

<p> </p>

<p>add_1_month = date.today() + relativedelta(months = 1)</p>

<p>print(add_1_month)</p>

<p>

 

 

한편 다음과 같이 calendar 모듈을 사용하는 방식도 생각해볼 수 있는데요~

 

그런데 오늘이 1월 31일인 경우에는 31일을 더하기 때문에 결과가 3월로 넘어갑니다 ㅎㄷㄷ

(1월이 31일까지 있으므로 31일을 더하는 그런 방식이에요)

 

</p>

<p>from datetime import date, timedelta</p>

<p>import calendar</p>

<p> </p>

<p>today = date.today()</p>

<p>addMonth = timedelta(days=calendar.monthrange(today.year, today.month)[1])</p>

<p>result = today + addMonth</p>

<p>print(result)</p>

<p>

 

 

그럼 남은 주말 즐겁게 보내세요 ^-^

 

감사합니다!

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인