【发布时间】:2012-09-12 07:47:48
【问题描述】:
dateutil rrule 是否支持 DST 和 TZ?需要类似于 iCalendar RRULE 的东西。
如果不是 - 如何解决此问题(安排重复事件和 DST 偏移更改)
进口
>>> from django.utils import timezone
>>> import pytz
>>> from datetime import timedelta
>>> from dateutil import rrule
>>> now = timezone.now()
>>> pl = pytz.timezone("Europe/Warsaw")
timedelta 的问题(需要具有相同的本地时间,但不同的 DST 偏移量):
>>> 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>)
rrule 的问题(每次发生的每个本地小时都需要相同):
>>> 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>)
【问题讨论】:
-
关于夏令时和时区的最佳做法,stackoverflow.com/q/2532729/1167333 提供了一个很好的最佳做法总结
标签: python datetime pytz rrule python-dateutil