Python日期格式转换触发ValueError,请求排查与解决
问题解决
错误原因
- 硬编码字符串而非变量:最后一行代码里,你把变量
test_str写成了字符串字面量"test_str",程序会尝试把这个固定字符串解析成日期,自然不符合%m/%d/%Y格式,触发ValueError。 - 异常处理不完整:虽然写了
try-except块,但仅在块内做了无意义的bool转换,没有保存解析后的日期对象,且后续的格式化代码不在try块保护范围内,即使前面捕获了异常,后面的代码依然会执行并报错。 - 冗余的
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
相关产品推荐
相关产品推荐

