---
# System prepended metadata

title: Untitled

---

## 問題描述

需要把 `標準格式` 與 `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
```

