python - проверка даты с указанием даты и времени
Я пытаюсь подтвердить string
предложено для пользователя. это string
надо писать в формате dd/mm/aaaa
и быть действительной датой. Я думал, чем создать много if
чтобы проверить это не быть элегантным, поэтому я исследую и поднял datetime
путь.
import datetime
dataInput = input("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")
ehDataValida = False
def validaData(dataInput) :
while True :
try :
if dataInput != datetime.datetime.strptime(dataInput, "%d/%m/%Y").strftime("%d/%m/%Y") :
raise ValueError
return False
except ValueError:
print("erro!")
dataInput = input("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")
return dataInput
validaData(dataInput)
print(validaData(dataInput))
Это не работает, и для каждого теста я обнаружил новую ошибку. Что мне не хватает? После этого я буду dataInput.split('/')
и достичь даты в listData=[dd, mm, yyyy]
1 ответ
Решение
Ваш ввод читается как целое число, например: если вы вводите 12/2/1992, он выполняет операцию деления как ((12 / 2) / 1992), что приводит к нулю. Вместо этого используйте raw_input
import datetime
dataInput = raw_input("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")
ehDataValida = False
def validaData(dataInput) :
try:
datetime.datetime.strptime(dataInput, '%d/%m/%y')
except ValueError:
raise ValueError("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")
validaData(dataInput)
Попробуй это. Он должен работать
while True:
try:
dataInput = raw_input("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")
date_formatted = datetime.datetime.strptime(dataInput, '%d/%m/%y')
break
except ValueError:
raise ValueError("Insira sua data de nascimento no formato 'dd/mm/aaaa': ")