[英]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.