如何匹配日期向导.rrule还有python icalendar daylightsavingtim

2024-09-29 19:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在处理一些ical的问题。在

我有一个ical活动。在

BEGIN:VEVENT
UID:Event/termine/gps/akt@portal.augusta.de 
DTSTART;TZID=CET:20150529T190000
DTEND;TZID=CET:20150529T220000
CATEGORIES:Arbeitsgruppe
DTSTAMP:20110620T075538Z
EXDATE;TZID=CET:20151225T190000
LAST-MODIFIED:20150424T201707Z
LOCATION:Vereinsräume des Augsburger Computer Forum e.V.
PRIORITY:5
RRULE:FREQ=MONTHLY;BYDAY=-1FR
SUMMARY:GPS-Arbeitsgruppe
URL:https://www.augusta.de/termine/gps
END:VEVENT

正如你所看到的,每个月的最后一个星期五都会有一个恶棍重复这个事件。在

我用icalendar解析了这个icalendar。在

我用的是:

^{pr2}$

到目前为止一切正常。在

当我试图得到下一个10个约会时:

list(rrset)[:10] 

我得到:

[datetime.datetime(2015, 5, 29, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 6, 26, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 7, 31, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 8, 28, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 9, 25, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 10, 30, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 11, 27, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 12, 25, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2016, 1, 29, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2016, 2, 26, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>)]

乍一看似乎还可以,但经过更深入的检查,从10月30日开始有一个问题,夏令时结束于10月25日,但datetime对象的tzinfo仍然是“DstTzInfo'CET'CEST+2:00:00 DST”

第二个问题是12月25日在这个列表中,而不是被跳过EXDATE中指定的。在分析exdate规则时,问题可能会被tat正确计算,因此exdate 19:00:00+01:00与计算的19:00:00+02:00的重复时间不匹配。在

我是不是做错了什么?在

将所有内容转换为UTC并在那里进行处理没有任何帮助,因为17:00:00 UTC也与18:00:00 UTC不匹配。在


Tags: datetimedegpsdstutcicaltzinfocet

热门问题