2015-05-04 53 views
0

我使用以下詳細信息創建了定期會議。無法在Java中以編程方式更新定期會議

BEGIN:VCALENDAR 
PRODID:-//XYZ//EN 
VERSION:2.0 
METHOD:REQUEST 
BEGIN:VEVENT 
ORGANIZER:MAILTO:[email protected] 
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:[email protected] 
RECURRENCE-ID:20150511T093000Z 
CLASS:PUBLIC 
STATUS:CONFIRMED 
DTSTART:20150511T093000Z 
DTEND:20150511T094500Z 
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;INTERVAL=1;COUNT=5 
LOCATION:conference-room 
TRANSP:OPAQUE 
SEQUENCE:1 
UID:tlc6006OJ52003 
DTSTAMP:20150511T093000Z 
ACTION:DISPLAY 
DESCRIPTION:sample 
SUMMARY:testing 
PRIORITY:5 
BEGIN:VALARM 
TRIGGER:-PT15M 
REPEAT:3 
DURATION:PT15M 
ACTION:DISPLAY 
DESCRIPTION:Reminder 
END:VALARM 
END:VEVENT 
END:VCALENDAR 

我試圖通過改變時間更新相同的定期會議:
原開始時間:20150511T093000Z
原始結束時間:20150511T094500Z

更新時間:20150511T084500Z
更新結束時間:20150511T091500Z

這裏是ICS的更新值

BEGIN:VCALENDAR 
PRODID:-//XYZ//EN 
VERSION:2.0 
METHOD:REQUEST 
BEGIN:VEVENT 
ORGANIZER:MAILTO:[email protected] 
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:[email protected] 
RECURRENCE-ID:20150511T084500Z 
CLASS:PUBLIC 
STATUS:CONFIRMED 
DTSTART:20150511T084500Z 
DTEND:20150511T091500Z 
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;INTERVAL=1;COUNT=5 
LOCATION:conference-room 
TRANSP:OPAQUE 
SEQUENCE:2 
UID:tlc6006OJ52003 
DTSTAMP:20150511T084500Z 
ACTION:DISPLAY 
DESCRIPTION:sample 
SUMMARY:testing 
PRIORITY:5 
BEGIN:VALARM 
TRIGGER:-PT15M 
REPEAT:3 
DURATION:PT15M 
ACTION:DISPLAY 
DESCRIPTION:Reminder 
END:VALARM 
END:VEVENT 
END:VCALENDAR 

但我的日曆沒有更新到新的時間。它仍然在我的Outlook日曆中顯示舊的詳細信息。我應該如何處理RECURRENCE-ID財產?我覺得這是造成這個問題的原因。兩個會議的UID都是一樣的。我也增加了SEQUENCE。我應該處理其他事情嗎?

回答

2

在同一VEVENT組件中不能同時存在RECURRENCE-ID和RRULE。

如果您想構建的是一個簡單的每週定期會議,那麼只需刪除RECURRENCE-ID屬性即可。

另一個問題是您的DTSTAMP屬性與您的DTSTART保持一致。因此,在第二個事件中,它比在第一個事件中更早。 DTSTAMP屬性應反映構建和發送VEVENT的日期和時間。所以如果你用新的信息更新你的事件,DTSTAMP應該比最初的時間晚。

只有當您有例外的定期會議(例如第三個實例具有不同的位置)時,才應該使用RECURRENCE-ID。很好的例子可在http://tools.ietf.org/html/rfc5546#section-4.4.8

+0

謝謝。瞭解RECURRENCE-ID是如何工作的。 :) –

0

在Outlook中,主設備和異常的UID不同,但後者是從前者派生的。

嘗試將修改後的定期約會作爲ICS文件保存在Outlook中,以查看Outlook的功能。

+0

按照您的建議嘗試。 Outlook正在修改時間並顯示日曆中的更新時間。但是,爲什麼在編程時沒有觀察到同樣的行爲? –

+0

您是否在記事本中打開Outlook創建的ICS文件並將其與您的代碼生成的內容進行比較? –