我试图编写代码(Python)来检查输入的日期格式,然后将其转换为DD-MM-yyy(如果输入格式与DD-MM-YYYY不同)。我在StackOverflow上检查过类似的问题,但它们都与验证或转换格式有关,我不知道如何同时完成这两个任务。我不能阻止其他格式的输入,因为它来自外部源。在
到目前为止,我写的是:
import datetime
YearOfBirthString = '05-30-1960'
if YearOfBirthString != '':
if datetime.datetime.strptime(YearOfBirthString, '%d-%m-%Y'):
print(YearOfBirthString)
elif datetime.datetime.strptime(YearOfBirthString, '%Y-%m-%d'):
correctDate = datetime.datetime.strptime(YearOfBirthString, '%Y-%m-%d').strftime('%d-%m-%Y')
print(correctDate)
elif datetime.datetime.strptime(YearOfBirthString, '%m-%d-%Y'):
correctDate = datetime.datetime.strptime(YearOfBirthString, '%m-%d-%Y').strftime('%d-%m-%Y')
print(correctDate)
elif datetime.datetime.strptime(YearOfBirthString, '%Y-%d-%m'):
correctDate = datetime.datetime.strptime(YearOfBirthString, '%Y-%d-%m').strftime('%d-%m-%Y')
print(correctDate)
else:
print('Nuffin')
else:
print('Nuffin')
它只在满足第一个“If”条件时才起作用-在任何其他情况下崩溃,而不是检查所有elif条件。错误信息如下:
"ValueError: time data '05-30-1960' does not match format '%Y-%m-%d'"
有人知道怎么处理吗?在
如果您可以使用dateutil。在
演示:
输出:
^{pr2}$您可以在一个函数中构造逻辑,在
for
循环中按顺序尝试几种datetime
格式。当特定格式成功时,return
。在此解决方案只涉及来自标准库的
datetime
,以及try
/except
来捕获不成功的尝试。在相关问题 更多 >
编程相关推荐