Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中如何从另一个日期对象中减去日期对象_Python_Date_Datetime_Countdown - Fatal编程技术网

在Python中如何从另一个日期对象中减去日期对象

在Python中如何从另一个日期对象中减去日期对象,python,date,datetime,countdown,Python,Date,Datetime,Countdown,我想知道两天之间有多少天。下一步是找出两天之间有多少小时,但这是以后的事了。我用今天的日期创建了一个日期对象,用用户输入创建了另一个日期对象,然后用较大的日期减去较小的日期。我想这就是我出错的地方,因为从另一个日期中减去一个日期是没有意义的,因为两者都是幼稚的,但是从另一个日期中减去一个日期时间是有意义的(注意) 我已经使用print(type(var))验证了对象的类型。两个创建的对象都是date类型,相减的结果是一个timedelta对象,正如预期的那样。减去date对象会给我错误的天数(4

我想知道两天之间有多少天。下一步是找出两天之间有多少小时,但这是以后的事了。我用今天的日期创建了一个日期对象,用用户输入创建了另一个日期对象,然后用较大的日期减去较小的日期。我想这就是我出错的地方,因为从另一个日期中减去一个日期是没有意义的,因为两者都是幼稚的,但是从另一个日期中减去一个日期时间是有意义的(注意)

我已经使用print(type(var))验证了对象的类型。两个创建的对象都是date类型,相减的结果是一个timedelta对象,正如预期的那样。减去date对象会给我错误的天数(400多天),而在我的例子中应该是350天

from datetime import date, timedelta, datetime
days = list(range(1, 32))
months = list(range(1, 13))
today = date.today()

def inputInteger(message):
    while True:
        try:
            userInput = int(input(message))
        except ValueError:
            print("Please enter an integer.")
            continue
        else:
            return userInput
            break


def inputMonth(message):
    while True:
        message = inputInteger(message)
        if message in months:
            return message
            break
        else:
            print("Please pick a value from 1-12")


def inputDay(message):
    while True:
        message = inputInteger(message)
        if int(message) in days:
            return message
            break
        else:
            print("Please pick a value from 1-31")


year = int(inputInteger('Enter a year'))
month = int(inputMonth('Enter a month (1-12)'))
day = int(inputDay('Enter a day (1-31)'))
# 2. add exception handling: leap years, leap seconds?, etc.
significantDate = date(year, month, day)
print("significant date:", significantDate, "of type", type(significantDate))
print("today:", today, "of type", type(today))
# 2. Tell me how many days are left until a certain date
if today > significantDate:
    delta = today - significantDate
    print("Days left:", delta.days)
else:
    print("entered less than")
    delta = significantDate - today
    print("Days left:", delta.days) 
    ```



这确实将两个对象转换为datetime对象,而不仅仅是date对象,但我仍然得到了一个糟糕的结果:(是的,2019-07-22输入年份2020输入月份(1-12)10输入日期(1-31)12重要日期:2020-10-12类型今天:2019-07-22类型剩余天数:448您的输入是什么,您从中发现其结果是错误的?我输入的是2020年7月12日。这应该是358天,但我得到451天。它给了我359天,代码似乎没有问题。您正在运行Python 3.7吗?是的。
Python 3.7.2
from datetime import datetime

year = int(inputInteger('Enter a year'))
month = int(inputMonth('Enter a month (1-12)'))
day = int(inputDay('Enter a day (1-31)'))

significantDate =datetime.strptime(str(year) +str(month) + str(day), '%Y%m%d') 


today = datetime.now()
print(today)



dt = today - significantDate

print(dt.days)