2014-11-11 2 views
-1

이 지금까지 내 코드입니다 :어떻게 사용자 입력에서 두 날짜의 차이를 계산할 수 있습니까?

 import datetime 
from time import strptime 
leapyear = 0 

isValid = False 
while not isValid: 
    in_date = input(" Please in put a year in the format dd/mm/yyyy ") 

    try: 
     d = strptime(in_date, '%d/%m/%Y') 
     isValid=True 
    except: 
     print ("This is not in the right format") 



date = datetime.date.today().strftime("%d/""%m/""%Y") 

in_date = in_date.split('/') 
date = date.split('/') 

in_date = [int(i) for i in in_date] 
date = [int(i) for i in date] 

date_f = [str(i) for i in date] 
date_f = '/'.join(date_f) 

in_date_f = [str(i) for i in in_date] 
in_date_f = '/'.join(in_date_f) 

newdate = [] 
in_date[0], in_date[2] = in_date[2], in_date[0] 
date[0], date[2] = date[2], date[0] 
z = "/" 
if in_date > date: 
    newdate.insert((0),(in_date[2] % date[2])) 
    newdate.insert((1),(in_date[1] % date[1])) 
    newdate.insert((2),(in_date[0] % date[0])) 

    print("Current Date:", date_f) 
    print("you are:", newdate[2],"year(s)",newdate[1],"month(s) and",newdate[0],"days away   from:",in_date_f) 

else: 
    print("Please input a date thats higher than todays.") 

내가 오늘 날짜를 촬영하고 멀리 촬영 한 순간에 그 현재 날짜보다 높게 가지고있는 사용자 입력 날짜로부터. 그러나 이것은 잘못된 대답을줍니다. 왜냐하면 그것은 한 달에 한 달의 일과 한 달에있는 달의 사실을 취하지 않기 때문입니다.

어떻게 그렇게할까요?

답변

0

datetime 개체 subtractable과 비교할 수 있으므로 전혀 문제가 하므로써 없다 :

userDate = strptime(in_date, '%d/%m/%Y') 

if userDate > datetime.datetime.today(): 
    # ... 

또는

if userDate.date() > datetime.datetime.today().date(): 
    # .... 

또는 차분 계산 :

diff = userDate - datetime.datetime.today() 
+0

이 방법을 난 -를 사용하여 목록과 datetime을 모두 가져 오는 예외를 얻습니다. – user3077551

+0

@ user3077551 요점은, 목록을 사용하지 말라는 것입니다 -'datetime' 객체를 사용하십시오. 노트'in_date' 대신'userDate'를 사용하고 있습니다. – BartoszKP

관련 문제