2012-11-13 19 views
7

Làm thế nào tôi có thể biết nếu một thời gian địa phương là không tồn tại? Tôi đang thử với pytz, nhưng nó ném một AmbiguousTimeError, không phải là một NonExistentTimeError.Python pytz: không tồn tại thời gian được AmbiguousTimeError, không NonExistentTimeError

2013-3-31 02:30 sẽ không bao giờ xảy ra ở Copenhagen do thời gian tiết kiệm ánh sáng ban ngày.

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" 

Nó đi đến trình xử lý ngoại lệ. Tôi đã thử:

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

Người dùng cung cấp cho tôi ngày và giờ qua biểu mẫu. Đây là thời gian địa phương và tôi cần xem liệu ngày tháng và thời gian có ổn không.

Tôi đang sử dụng Django với USE_TZ = True, nhưng tôi không nghĩ rằng vấn đề ở đây.

+0

Phiên bản của mô-đun 'pytz' là gì? Tôi thực sự có ngoại lệ 'NonExistentTimeError'. –

+0

phiên bản 2006p. Của bạn là gì? – user984003

+0

Tôi thấy từ câu trả lời khác rằng phiên bản của tôi thực sự cũ. Tôi đã tải xuống nó hai ngày trước đây tại đây: http://sourceforge.net/projects/pytz/ Tôi sẽ xem xét cho phiên bản mới hơn. – user984003

Trả lời

7

Nâng cấp gói pytz của bạn. Này làm việc cho tôi trong phiên bản 2012d ví dụ:

>>> 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 

Sử dụng pip install -U pytz hoặc easy_install -U pytz để nâng cấp.

+0

Mỏ là năm 2006. Nó thực sự là cũ. Tôi tải về nó hai ngày trước đây ở đây: http://sourceforge.net/projects/pytz/ Điều đó có vẻ giống như một nơi mà sẽ có một cập nhật. Tôi sẽ xem xét cho cái mới hơn. – user984003

+2

Thay vào đó hãy tải xuống từ http://pypi.python.org/pypi/pytz/ (chỉ mục gói Python). –

+0

Bạn không chắc chắn đây là câu trả lời được chấp nhận. Nó có thể giúp cho một số, nhưng phiên bản của tôi là 2017.2 và tôi nhận được điều này trên 'pytz.exceptions.AmbiguousTimeError: 2015-11-01 01: 10: 07' – shacker

Các vấn đề liên quan