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

如何获取日期格式的用户输入并实现日期差值计算?

问题分析与解决方案

核心问题

  1. 输入函数误用:你用get_int()获取DD/MM/YYYY格式的日期字符串,该函数仅支持整数输入,直接触发ValueError。
  2. 日期类型混乱:将当前日期转成字符串后无法与日期对象进行比较/运算;且直接用datetime(due_date)转换输入字符串是错误的,datetime构造函数不接受这种格式的字符串参数。

修正后的代码

from datetime import datetime

# 获取当前日期的date对象(仅保留日期部分,去除时间)
current_date = datetime.today().date()
# 格式化后展示当前日期
show_str(f"Today's date is:\n-> {current_date.strftime('%d/%m/%Y')}\n")

biller_name = get_str("What is the billers name?\n-> ")

# 用get_str获取日期字符串输入
due_date_str = get_str("When is your bill due?\n(Enter date as \"DD/MM/YYYY\")\n-> ")

try:
    # 按指定格式将输入字符串解析为date对象
    due_date = datetime.strptime(due_date_str, '%d/%m/%Y').date()
    
    # 对比日期并判断账单状态
    if due_date < current_date:
        days_overdue = (current_date - due_date).days
        show_str(f"Bill from {biller_name} is {days_overdue} days overdue!")
    elif due_date == current_date:
        show_str(f"Bill from {biller_name} is due today!")
    else:
        days_until_due = (due_date - current_date).days
        show_str(f"Bill from {biller_name} is due in {days_until_due} days.")
except ValueError:
    # 处理日期格式错误的情况
    show_str("Invalid date format! Please enter the date in DD/MM/YYYY format.")

关键说明

  • 保留日期对象:始终使用datetime.date类型处理日期,避免转成字符串,这样才能直接进行比较和差值计算。
  • 正确转换输入:用datetime.strptime()将用户输入的字符串按指定格式解析为日期对象,这是字符串转日期的标准方法。
  • 错误捕获:添加try-except块捕获格式错误,提示用户输入符合要求的日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:40:37