Вы можете попробовать сделать
import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
, что устранит некоторые вещи, такие как месяцы> 12, часы> 23, несуществующие високосные дни (месяц = 2 имеет максимум 28 для не високосных лет, 29 в противном случае, другие месяцы имеют максимум 30 или 31 день) (выдает исключение ValueError при ошибке)
Также вы можете попытаться сравнить это с некоторыми верхними / нижними границами здравомыслия.
ex.:
datetime.date(year=2000, month=1,day=1) < datetime.datetime(year=year,month=month,day=day,hour=hour) <= datetime.datetime.now()
Соответствующие верхние и нижние границы вменяемости зависят от ваших потребностей.
edit: помните, что это не относится к определенным датам и вещам, которые могут быть недопустимыми для вашего приложения (мин. День рождения, праздничные дни, нерабочее время и т. Д.)