2012-11-13 1 views
7

現地時間が存在しないかどうかを確認するにはどうすればよいですか?私はpytzで試していますが、NonExistentTimeErrorではなくAmbiguousTimeErrorをスローします。Python Pytz:存在しない時間はNonExistentTimeErrorではなくAmbiguousTimeErrorになります

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' 

ユーザーは私にフォームを介して日付と時刻を提供します。これらは現地時間であり、日付と時刻が正しいかどうかを確認する必要があります。

私はUSE_TZ = TrueでDjangoを使用していますが、ここでは問題はないと思います。

+0

これはどのバージョンの 'pytz'モジュールですか?私は実際には 'NonExistentTimeError'例外を持っています。 –

+0

バージョン2006p。君は? – user984003

+0

私のバージョンは本当に古いと私は他の答えから参照してください。私は2日前にそれをダウンロードしました: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 pytzまたはeasy_install -U pytzを使用してください。

+0

私は2006年です。本当に古いです。私は2日前にダウンロードしました: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

関連する問題