Python использует exceptions для обмена неверными вводами. Если time.strptime()
не создает исключение, возвращаемое значение является правильным, и вам не нужно его проверять самостоятельно.
Если возбуждается исключение, вы можете поймать его с try...except
заявление:
try:
t = time.strptime(userinput, format)
except ValueError:
# exception raised, not valid input, give feedback to user
Демо:
>>> import time
>>> time.strptime('01/02/2014 10:42:36', '%d/%m/%Y %H:%M:%S')
time.struct_time(tm_year=2014, tm_mon=2, tm_mday=1, tm_hour=10, tm_min=42, tm_sec=36, tm_wday=5, tm_yday=32, tm_isdst=-1)
>>> time.strptime('31/02/2014 10:42:36', '%d/%m/%Y %H:%M:%S')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 494, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 465, in _strptime
datetime_date(year, 1, 1).toordinal() + 1
ValueError: day is out of range for month
Обратите внимание, что было брошено исключение здесь, потому что 31
выходит за пределы допустимых дней диапазона за февраль.
Просмотрено в двух книгах Python и НЕ задокументировано. Проблема исправлена! – MichaelJohn