Ho trovato alcune cose strane. Ecco alcuni esempi.Django timezone.make_aware ha generato AmbiguousTimeError per il 26/10/2014 26:45:00
from django.utils import timezone
value = u'2014-10-26 01:45:00'
#I know that a variable has 'Europe/Moscow' timezone. Let's tell Django about it.
TZ = timezone.pytz.timezone('Europe/Moscow')
d = timezone.datetime.strptime(value,'%Y-%m-%d %H:%M:%S')
print timezone.make_aware(d,TZ)
#raised AmbiguousTimeError: 2014-10-26 01:45:00
E poi inizia il divertimento
print timezone.make_aware(d+timezone.timedelta(minutes=15),TZ)
#out: 2014-10-26 02:00:00+03:00
print timezone.make_aware(d+timezone.timedelta(minutes=14),TZ)
#raised AmbiguousTimeError
print timezone.make_aware(d-timezone.timedelta(minutes=46),TZ)
#out: 2014-10-26 00:59:00+04:00
print timezone.make_aware(d-timezone.timedelta(minutes=45),TZ)
#raised AmbiguousTimeError
Così AmbiguousTimeError sollevato tra 2014/10/26 00:59:00 e 2014-10-26 02:00:00
PERCHE '? E come lo risolvono?
non è l'ora legale. Europa/Mosca ha UTC + 0400 compensato per tutto l'anno. L'offset è cambiato (da un ordine governativo specifico) a UTC + 0300 al 26 ottobre 2014. Sebbene l'effetto sia lo stesso della transizione di fine dell'ora legale ("fall back") ad esempio, vedere [Bug # 1378150 "Migliorare il supporto per end-of-DST-like ambiguous time ... "' pytz' bug] (https://bugs.launchpad.net/pytz/+bug/1378150) - significa che anche esplicativo 'TZ.localize (ingenuo, is_dst = True) '(o' is_dst = False') non darà il tempo desiderato fino a quando il bug non verrà risolto. – jfs