2012-11-13 20 views
7

如何判斷本地時間是否不存在?我試圖用pytz,但它會引發AmbiguousTimeError,而不是NonExistentTimeError。Python 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,但我認爲這不重要。

+0

什麼版本的pytz模塊是這樣的?我其實有'NonExistentTimeError'異常。 –

+0

版本2006p。你的是啥呢? – user984003

+0

我從其他答案中看到我的版本真的很舊。兩天前我在這裏下載了它:http://sourceforge.net/projects/pytz/我會環顧新的。 – user984003

回答

7

升級您的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升級。

+0

我是2006年。它真的很老。兩天前我在這裏下載了它:http://sourceforge.net/projects/pytz/這看起來像一個地方,將有更新的一個。我會環顧新的。 – user984003

+2

改爲從http://pypi.python.org/pypi/pytz/(Python包索引)下載它。 –

+0

不確定這應該是被接受的答案。這可能對某些人有幫助,但是我的版本是2017.2,我在'pytz.exceptions.AmbiguousTimeError:2015-11-01 01:10:07' – shacker

相關問題