2016-03-02 24 views
1

我有一个生成ICS文件和一些事件往往具有复杂的循环规则(i.e. every Monday between date1 and date2 except on holiday1 or holiday2 but also occurs once on randomDate1)脚本的iCal复杂的重复发生的事件似乎并没有正常工作

鉴于我的定义here规范的理解,似乎很简单表示这是RRULE,RDATE和EXDATE

之间的混合正如你在My Complex Event

  • RRULE见下文定义通常的预期复发:每星期一1月11日至四月15
  • RDATE定义了一个流浪不寻常的日期4月13日
  • EXDATE消除了对1月25日发生

但是,一旦我打开微软Outlook 2016这个文件,我看到RRULE目标上的日期事件,我没有看到它在一个由EXDATE(这是好的),有针对性的,但我没有看到它由RDATE(不行)的目标日期

我已经验证了我的iCal here并没有发现任何错误。所以我不知道: 这是一个Outlook错误?是否有一些命令我应该用于ical属性?

我也尝试导入到谷歌日历本,但也看不到周三4月13日定义发生只见它在周二4月12日的RRULE和EXDATE如预期得工作。

任何想法?

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//dkhalife//NONSGML Dany v2.0//FR 
METHOD:PUBLISH 
X-WR-CALNAME:Dany 
CALSCALE:GREGORIAN 
BEGIN:VTIMEZONE 
TZID:America/Montreal 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0400 
TZNAME:EDT 
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0400 
TZOFFSETTO:-0500 
TZNAME:EST 
DTSTART:19701101T020000 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VEVENT 
CATEGORIES:Cours 
SUMMARY:My Complex Event 
LOCATION:Location Location Location 
DTSTART;TZID=America/Montreal:20160111T124500 
DTEND;TZID=America/Montreal:20160111T143500 
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415 
RDATE;VALUE=DATE:20160413 
EXDATE;VALUE=DATE:20160125 
UID:xxxx 
END:VEVENT 
END:VCALENDAR 
+0

你试图创建与例外的要求定期模式的约会并从Outlook保存为ICS文件? BTW,。我不认为Outlook使用RDATE。 –

+0

我真的不知道如何把更多的非标日期到Outlook中。换句话说,我在Outlook应该在哪里输入我目前在RDATE的日期? –

回答

1

你的事件有一段时间,但RDATEEXDATE值是全天,这是没有意义的(我概述了几年前在响应bug in KOrganizer)和国际海事组织是无效的(即使RFC 5545没有明确说明)。

尝试通过

RDATE;TZID=America/Montreal:20160413T124500 
EXDATE;TZID=America/Montreal:20160125T124500 

顺便说一句,以取代

RDATE;VALUE=DATE:20160413 
EXDATE;VALUE=DATE:20160125 

。同样是对于必须在UTC时间,如果你的事件在任何时区锚来指定UNTIL条款真(这在RFC 5545明确指定)。

所以你RRULE应该是这样的:

RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415T164500Z 
+0

哇,这是它。我记得在某处看到,如果你没有指定时间部分,它将与DTSTART指示的相同。也许这是一些错误的文件。但是,我注意到现在事件显示出来了,它被视为一个单独的事件。 (即,如果您删除正常重复或由RDATE指定的实例,则不会删除所有事件的发生。)任何想法是什么罪魁祸首? –

+1

你可能已经在RRULE的背景下看到过。如果规则中没有指定其他时间,则重复实例确实会继承开始时间。关于删除实例,这是一个UI问题。我知道的大多数客户会问你是否删除单个实例或整个事件(或所有未来的实例)。我不使用Outlook,所以我不知道是否有办法实现这一点。 – Marten