time.strptime()的返回值

时间:2014-10-24 09:33:36

标签: python python-2.7 time strptime

我在我的Python程序中使用t = time.strptime()并想检查它是否无法返回有效的结构。

当我在C编程时,我常常检查NULL的返回值,以指示已经进行了无效调用。但是,这似乎不适用于Python。我还检查了not t-1。我在这个阶段尝试做的是检查用户是否没有输入无效的日期时间,而没有单独检查每个字段是否有错误,如31/02/2014等。

如何查看返回值?

1 个答案:

答案 0 :(得分:2)

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超出了2月份的有效天数范围。