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

如何在Python中限制用户输入的日期范围(适配Frankfurter API)

日期范围校验的实现方案

你可以把日期范围校验放在try块的else分支里——只有当日期格式转换成功(无异常)时,才需要做范围检查。具体实现步骤如下:

  1. 先定义API支持的最小日期常量:MIN_ALLOWED_DATE = datetime.date(1999, 1, 4)
  2. 格式转换成功后,检查用户输入的日期是否早于这个最小日期
  3. 如果不符合范围,打印提示信息,不执行break,让循环继续等待用户重新输入;如果符合要求,才跳出循环

修改后的完整代码:

import datetime

MIN_ALLOWED_DATE = datetime.date(1999, 1, 4)

while True:
    rate_date = input("Enter the date you'd like the exchange rate to be on (yyyy-mm-dd): ")
    try:
        str_to_date = datetime.strptime(rate_date, '%Y-%m-%d').date()
    except ValueError as e:
        print(f"Error: {e}")
        print("Please enter a suitable date in the required format (yyyy-mm-dd).")
    except Exception:
        print("Please enter a suitable date in the required format (yyyy-mm-dd).")
    else:
        if str_to_date < MIN_ALLOWED_DATE:
            print(f"Error: The earliest supported date is {MIN_ALLOWED_DATE.strftime('%Y-%m-%d')}. Please enter a date on or after this.")
        else:
            break
# 后续可使用str_to_date变量调用Frankfurter API

逻辑说明:

  • while True循环确保用户输入不符合要求时,会持续提示重新输入
  • try-except仅负责处理日期格式错误的情况
  • else分支专门处理格式正确后的日期范围校验:日期太早则提示错误并回到循环,合法则跳出循环执行后续逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:25:20