You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算用户输入日期与今日日期天数差时遇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")

关键说明

  1. 原代码里date.strftime(initial_date)完全错误:strftime的正确用法是给它传日期对象和格式字符串,比如date.strftime(today, "%Y-%m-%d"),或者直接用日期对象调用:today.strftime("%Y-%m-%d"),你传字符串自然会触发TypeError。
  2. date.strptime()是专门用来解析字符串生成日期对象的方法,必须传入字符串和对应的格式符,两者要完全匹配,否则会报错。
  3. 两个date对象相减会得到一个timedelta对象,用.days可以提取其中的天数数值。

内容的提问来源于stack exchange,提问作者Pradeep Puri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:15:20