计算用户输入日期与今日日期天数差时遇TypeError问题求助
解决日期天数计算的TypeError问题
错误原因
你搞反了日期转换的方法:date.strftime()是用来把日期对象转换成字符串的,而你需要把输入的字符串日期转成日期对象,应该用date.strptime(),还要匹配正确的日期格式符。
修正后的代码
假设你输入的日期格式是yyyy-mm-dd(比如2023-08-31),代码如下:
from datetime import date # 获取用户输入的日期字符串 input_date = input("请输入日期(格式:yyyy-mm-dd): ") # 将字符串转换为日期对象,指定对应格式 target_date = date.strptime(input_date, "%Y-%m-%d") # 获取当前日期 today = date.today() # 计算剩余天数(输入日期在当前日期之后时为正) remaining_days = target_date - today # 输出结果,.days可以提取纯天数数值 print(f"剩余天数:{remaining_days.days}天")
如果你的输入格式确实是yy:mm:dd(比如23:08:31),只需要把格式符改成"%y:%m:%d"即可:
target_date = date.strptime(input_date, "%y:%m:%d")
关键说明
- 原代码里
date.strftime(initial_date)完全错误:strftime的正确用法是给它传日期对象和格式字符串,比如date.strftime(today, "%Y-%m-%d"),或者直接用日期对象调用:today.strftime("%Y-%m-%d"),你传字符串自然会触发TypeError。 date.strptime()是专门用来解析字符串生成日期对象的方法,必须传入字符串和对应的格式符,两者要完全匹配,否则会报错。- 两个date对象相减会得到一个timedelta对象,用
.days可以提取其中的天数数值。
内容的提问来源于stack exchange,提问作者Pradeep Puri
相关产品推荐
相关产品推荐

