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

Python日期格式转换触发ValueError,请求排查与解决

问题解决

错误原因

  1. 硬编码字符串而非变量:最后一行代码里,你把变量test_str写成了字符串字面量"test_str",程序会尝试把这个固定字符串解析成日期,自然不符合%m/%d/%Y格式,触发ValueError。
  2. 异常处理不完整:虽然写了try-except块,但仅在块内做了无意义的bool转换,没有保存解析后的日期对象,且后续的格式化代码不在try块保护范围内,即使前面捕获了异常,后面的代码依然会执行并报错。
  3. 冗余的bool转换:datetime.strptime本身返回datetime对象,无需转成布尔值,这一步完全多余。

修正后的代码

import datetime

test_str = input("Enter date: ")
input_format = "%m/%d/%Y"
output_format = "%Y-%m-%d"

try:
    # 解析输入日期并保存为datetime对象
    date_obj = datetime.datetime.strptime(test_str, input_format)
    # 转换为目标格式并打印
    print(date_obj.strftime(output_format))
except ValueError:
    print("The Date is not in the required format")

修改说明

  • 移除了冗余的bool转换,直接保存解析后的datetime对象。
  • 将格式化打印逻辑放入try块内,确保只有解析成功时才执行格式化输出。
  • 把最后一行的"test_str"改为变量test_str,使用用户实际输入的内容。
  • 拆分输入/输出格式为不同变量,代码更清晰。
  • 明确捕获ValueError(不建议用裸except,避免捕获无关异常)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:50:29