2012-07-05 4 views
0

나는 파이썬에서 UTCDateTime 객체를 가지고 있으며, 그 객체가 오늘 이후에 있지만 내년 내에 있는지 확인해야한다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?Datetime 만료 내년

미리 감사드립니다.

13 개월에서 1 년으로 변경되었습니다.

+0

당신이 어떤 수를 13 개월에서 상태를 변경할 수 있다면 당신은 오프 훨씬 더 좋을 것이다 일, 예. 이것이 90 일 보증과 같은 것을 보는 이유입니다. –

답변

2
now = datetime.datetime.utcnow() 
    if now.month < 12: 
     expire_date = now.replace(year=now.year + 1, month=now.month + 1) 
    else: 
     expire_date = now.replace(year=now.year + 2, month=0) 

비록 2 월 31 일부터 1 월 31 일에 실행하면이 오류가 계속 발생합니다. 이러한 문제를 피하기 위해 달 의존성과 관련된 몇 가지 조건을 추가 할 수 있습니다.

12 개월 (re : comment)으로 변경하면 윤년에 대해서만 걱정할 필요가 있습니다. dateutil 모듈은 당신을 위해 이것을 처리 할 수 ​​

now = datetime.datetime.utcnow() 
exp_year = now.year + 1 
exp_month = now.month 
exp_day = now.day 

if exp_month == 2 and exp_day == 29: 
    exp_month += 1 
    exp_day = 1 

exp_date = now.replace(year=exp_year, month=exp_month, day=exp_day) 
+0

13 개월 대신 1 년 동안 확인하는 것은 어떨까요? – willm

+0

그러면 조건을 완전히 제거 할 수 있습니다 ... 'exp_date = now.replace (year = now.year + 1)'로 가십시오. 윤년이 여전히 당신을 물을 수 있습니다. 당신은 그것을 확인할 수 있습니다. – mayhewr

+0

어떻게 그걸 부울로 사용할 수 있습니까? – willm

1

는 (날짜의뿐만 아니라 함께 같은 작품)

from datetime import date 
from dateutil import relativedelta 

from date import date 

d = date(2011, 1, 31) 
delta = relativedelta.relativedelta(months=13) 
d + delta 

#datetime.date(2011, 2, 28) 
+0

은 최선의 답변과 가르치기에 대해'dateutil' +1에 대해 몰랐습니다! –