8

現地時間が存在しないかどうかを確認するにはどうすればよいですか? 私は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'

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

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

4

1 に答える 1

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 pytzまたはを使用easy_install -U pytzしてアップグレードします。

于 2012-11-13T18:06:15.687 に答える