Hiện hỗ trợ dateutil rrule DST và TZ? Cần một cái gì đó tương tự như iCalendar RRULE.Làm cách nào để xử lý DST và TZ trong các sự kiện định kỳ?
Nếu không - làm thế nào để giải quyết vấn đề này (lập kế hoạch định kỳ sự kiện & DST bù đắp thay đổi)
Imports
>>> from django.utils import timezone
>>> import pytz
>>> from datetime import timedelta
>>> from dateutil import rrule
>>> now = timezone.now()
>>> pl = pytz.timezone("Europe/Warsaw")
Issue với timedelta (cần phải có những giờ địa phương giống nhau, nhưng offsets DST khác nhau) :
>>> pl.normalize(now)
datetime.datetime(2012, 9, 20, 1, 16, 58, 226000, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)
>>> pl.normalize(now+timedelta(days=180))
datetime.datetime(2013, 3, 19, 0, 16, 58, 226000, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>)
Vấn đề với rrule (cần phải có cùng giờ địa phương của mỗi lần xuất hiện):
>>> r = rrule.rrule(3,dtstart=now,interval=180,count=2)
>>> pl.normalize(r[0])
datetime.datetime(2012, 9, 20, 1, 16, 58, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)
>>> pl.normalize(r[1])
datetime.datetime(2013, 3, 19, 0, 16, 58, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>)
để có các phương pháp hay nhất về tiết kiệm ánh sáng ban ngày và múi giờ, http://stackoverflow.com/q/2532729/1167333 cung cấp tóm tắt tốt về các phương pháp hay nhất – oberron