繁体   English   中英

如何用输入日期减去今天的日期?

[英]How to subtract today's date with an input date?

我当前的代码:

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

diff = d -datetime.date.today()
print(in_date)
print(d)
print(diff)

我不能互相减去两个日期,即输入日期和今天的日期。 TypeError: unsupported operand type(s) for -: 'time.struct_time' and 'datetime.date'异常引发TypeError: unsupported operand type(s) for -: 'time.struct_time' and 'datetime.date'

有什么想法吗?

datetime模块对象仅支持与同一库中的其他对象相减。 time模块struct_time元组不是其中之一。

请使用datetime.datetime.strptime()类方法解析日期:

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

然后使用datetime.date()方法从结果中提取date对象:

diff = d.date() - datetime.date.today()

结果是datetime.timedelta实例

不要捕获所有异常; 在传递与预期格式ValueError不匹配的字符串时,仅捕获strptime()抛出的异常:

while True:
     in_date = input(" Please in put a year in the format dd/mm/yyyy ")
     try:
         d = datetime.datetime.strptime(in_date, '%d/%m/%Y').date()
         break
     except ValueError:
         print ("This is not in the right format")

我在这里使用break来结束while循环,而不是使用flag变量。

import datetime
from datetime import strptime
currentdate=datetime.date.today()
date_str = input("enter date in format dd/mm/yyy") #inputed date is in string need to conver ot into date 
#format_str = '%d/%m/%Y' # The format
datetime_obj = datetime.datetime.strptime(date_str, '%d/%m/%Y') # convert inputed date into date 
diff= datetime_obj.date() - currentdate # take .date because we only need date not time 

print("Current date ==",currentdate)
print("entered date ==",datetime_obj.date()) 
print("remaining Days left  ===",diff)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM