如何解决将用户输入的字符串转换为 datetime.date 时防止 ValueError
当遇到来自用户输入无效日期的 ValueError 时,是否可能没有错误?例如,如果我在日期框中输入“123456”,程序就会出错。理想情况下,它会要求用户再次尝试输入日期,就像他们刚刚输入错误的日期长度一样。
import datetime
from datetime import timedelta
#start date
while True:
startDate = input('Start Date (DDMMYY): ')
if startDate == '':
startDate = datetime.date.today() - timedelta(days=1) #defaults to yesterday
break
elif len(startDate) == 6:
startDate = datetime.datetime.strptime(startDate,'%d%m%y').date() #converts input to proper date format if correct length
break
print('Date must be in format DDMMYY,please try again')
#end date
while True:
endDate = input('End Date (DDMMYY): ')
if endDate == '':
endDate = datetime.date.today() #defaults to today
break
elif len(endDate) == 6:
endDate = datetime.datetime.strptime(endDate,'%d%m%y').date()
break
print('Date must be in format DDMMYY,please try again')
print(startDate)
print(endDate)
解决方法
是的,您可以使用像这样的 try-except 语句
#start date
while True:
startDate = input('Start Date (DDMMYY): ')
if startDate == '':
startDate = datetime.date.today() - timedelta(days=1) #defaults to yesterday
break
elif len(startDate) == 6:
try:
startDate = datetime.datetime.strptime(startDate,'%d%m%y').date() #converts input to proper date format if correct length
break
except:
print('Date must be in format DDMMYY,please try again')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。