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': ")
Другие вопросы по тегам