## 問題描述 需要把 `標準格式` 與 `S6行事曆格式` 相對應的格式整理出來 並記錄mapping 過程的轉換 方法 ## 標準格式 iCalendar中的頂級元素是日曆和計劃核心物件,一組日曆和計劃資訊。通常情況下,這些資訊應該只包含單一的iCalendar物件。但可以聲明一個組包含多個iCalendar物件。 第一行必須是"BEGIN:VCALENDER",最後一行必須是"END:VCALENDER";兩行之間數據稱之為"icalbody"。 icalbody由一系列日曆屬性和一個以上的日曆組件組成。日曆屬性被應用於整個日曆。日曆組件則是由若干日曆屬性描述成的一個日曆語義。比如,日曆組件可以指定一個事件、一個待辦事項列表、一個旅行事項、時區資訊、繁忙/空閒時間資訊,或者一個警報。在許多協定實現(比如Google Calendar)中不允許出現空行。 下在是一個簡單的iCalendar物件範例,它描述了法國國慶日,即從1997年七月14日 17:00到1997年七月15日 03:59:59的巴士底日。 ``` BEGIN:VCALENDAR VERSION:2.0 PRODID:-//hacksw/handcal//NONSGML v1.0//EN BEGIN:VEVENT UID:uid1@example.com DTSTAMP:19970714T170000Z ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com DTSTART:19970714T170000Z DTEND:19970715T035959Z SUMMARY:Bastille Day Party END:VEVENT END:VCALENDAR ``` ## VCALENDAR |欄位|說明|備註| |----|-----|------| |BEGIN |行事曆開始位置:行事曆 | 結束必須也有標籤 END:VCALENDAR | |VERSION |此屬性必須由 iCalendar 對象指定,但必須僅指定一次。|| |PRODID |產品標識符 <br>EX實現的供應商應該確保這是一個全球唯一的標識符;使用一些技術,例如 [ISO 9070] 中定義的 FPI 值。|| |BEGIN |行事曆開始位置:事件 |裡面包含事件主體,結束必須也有標籤 END:VEVENT| ## VEVENT |欄位|說明|備註| |----|-----|------| |UID|用戶識別碼|確保唯一性的一個好方法是將創建標識符的主機的域名或域文字 IP 地址放在“@”的右側,並在左側放置當前日曆日期和時間(即格式化為DATE-TIME值)以及系統上可用的其他一些當前唯一(可能是連續的)標識符(例如,進程 ID 號)。| |DTSTAMP|創建 iCalendar 對象日期/時間|該值必須以 UTC 時間格式指定。| |DTSTART|日曆組件的開始時間|時間值必須是為DATE-TIME值類型定義的形式之一| |SUMMARY|標題|此屬性定義日曆組件的簡短摘要或主題|| |CLASS|分類|此屬性定義日曆組件的訪問分類。<BR>"PUBLIC" / "PRIVATE" / "CONFIDENTIAL"<BR>Default is PUBLIC | |CATEGORIES|類別|定義日曆組件的類別 <BR>可以自定義 : 約會/會議..等| |RRULE|發生規則|此屬性為重複發生的事件、待辦事項或時區定義定義規則或重複模式。| EX: ``` 每天十次 DTSTART;TZID=US-Eastern:19970902T090000 RRULE:FREQ=DAILY;COUNT=10 每天,直到該日期 DTSTART;TZID=US-Eastern:19970902T090000 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z 每隔一天觸發一次 DTSTART;TZID=US-Eastern:19970902T090000 RRULE:FREQ=DAILY;INTERVAL=2 每隔10天觸發一次,觸發五次 DTSTART;TZID=US-Eastern:19970902T090000 RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 每周十次 DTSTART;TZID=US-Eastern:19970902T090000 RRULE:FREQ=WEEKLY;COUNT=10 ``` ## 參考資料: https://www.kanzaki.com/docs/ical/rrule.html - 範例 : ``` BEGIN:VEVENT UID:19970901T130000Z-123403@host.com DTSTAMP:19970901T1300Z DTSTART:19971102 SUMMARY:Our Blissful Anniversary CLASS:CONFIDENTIAL CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION RRULE:FREQ=YEARLY END:VEVENT ```