如何根据用户输入计算两个日期之间的差异?

时间:2014-11-11 12:11:37

标签: date python-3.x

到目前为止,这是我的代码:

       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.")

目前我已经采取了今天的日期,然后从用户输入日期开始,该日期必须高于当前日期。但是这给出了错误的答案,因为它没有考虑到一个月内和一年中的几个月的事实。

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

datetime个对象是可以减少的并且具有可比性,所以这样做没有问题:

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

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

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

或计算差异:

diff = userDate - datetime.datetime.today()
相关问题