Python pytz:不存在的时间得到AmbiguousTimeError,而不是NonExistentTimeError

时间:2012-11-13 17:59:43

标签: python timezone pytz

如何判断当地时间是否不存在?我正在尝试使用pytz,但它会抛出一个AmbiguousTimeError,而不是NonExistentTimeError。

2013-3-31 02:30由于夏令时,哥本哈根永远不会发生。

local_tz = timezone('Europe/Copenhagen')
try:
    non_e = local_tz.localize(datetime.datetime(2013, 3, 31, 2, 30), is_dst = None) 
except pytz.AmbiguousTimeError:
    print "AmbiguousTimeError"

它转到异常处理程序。我试过了:

 except pytz.NonExistentTimeError: #'module' object has no attribute 'NonExistentTimeError'
 except pytz.exceptions.NonExistentTimeError: #'module' object has no attribute 'exceptions'

用户通过表单向我提供日期和时间。这些是在当地时间,我需要看看日期和时间是否正常。

我正在使用Django和USE_TZ = True,但我认为这不重要。

1 个答案:

答案 0 :(得分:8)

升级您的pytz套餐。这适用于版本2012d,例如:

>>> import pytz, datetime
>>> pytz.__version__
'2012d'
>>> local_tz = pytz.timezone('Europe/Copenhagen')
>>> local_tz.localize(datetime.datetime(2013, 3, 31, 2, 30), is_dst=None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pytz/tzinfo.py", line 327, in localize
    raise NonExistentTimeError(dt)
pytz.exceptions.NonExistentTimeError: 2013-03-31 02:30:00

使用pip install -U pytzeasy_install -U pytz进行升级。