<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=ICalendar</id>
	<title>ICalendar - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=ICalendar"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ICalendar&amp;action=history"/>
	<updated>2026-07-20T00:19:12Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=ICalendar&amp;diff=421459&amp;oldid=prev</id>
		<title>2026年4月7日 (二) 18:28 ~2026-21531-27</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ICalendar&amp;diff=421459&amp;oldid=prev"/>
		<updated>2026-04-07T18:28:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Multiple issues|&lt;br /&gt;
{{Expand language|1=en|time=2022-05-21T07:45:25+00:00}}&lt;br /&gt;
{{Unreferenced|time=2022-05-21T07:45:25+00:00}}&lt;br /&gt;
}}&lt;br /&gt;
{{lowercase|title=iCalendar}}&lt;br /&gt;
{{NoteTA|G1=IT}}&lt;br /&gt;
{{Infobox file format&lt;br /&gt;
| name = iCalendar&lt;br /&gt;
| icon = &lt;br /&gt;
| logo = &lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| extension = .ical; .ics; .ifb&amp;lt;br /&amp;gt;.icalendar&lt;br /&gt;
| mime = text/calendar&lt;br /&gt;
| type code = &lt;br /&gt;
| uniform type = &lt;br /&gt;
| magic = &lt;br /&gt;
| owner = &lt;br /&gt;
| genre = [[日曆]]數據交換&lt;br /&gt;
| container for = &lt;br /&gt;
| contained by = &lt;br /&gt;
| extended from = &lt;br /&gt;
| extended to = &lt;br /&gt;
| standard = RFC 5545&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;span lang=&amp;quot;zh-tw&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;iCalendar&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;是“[[日曆]]數據交換”的標準（RFC 5545）。&lt;br /&gt;
此標準有時指的是“iCal”，即[[蘋果公司]]的出品的一款同名日曆軟件（見[[行事曆 (Apple)|iCal]]），這個軟件也是此標準的一種實現方式。&lt;br /&gt;
&lt;br /&gt;
iCalendar允許用戶通過電子郵件的方式發送“會議請求”或“任務”。收信人使用支持iCalendar郵件客戶端，便可以很方便地回應發件人，接受請求或另外提議一個新的會議時間。&lt;br /&gt;
&lt;br /&gt;
iCalendar已得到很多產品的支持。通常情況下，iCalendar數據是使用電子郵件交換，但它也可以獨立使用，而不局限於某種傳輸協議。例如，可以通過WebDav伺服器或SyncML來進行共享與修改。簡單的網頁伺服器（只使用HTTP協議）也常常被用來分發公共事件的iCalendar數據，或發佈個人的時間謀劃安排。發佈者可以使用[[hCalendar]]把iCalendar數據嵌入到網頁中。（hCalendar是一種通過[[XHTML|（X）]][[HTML]]來表現iCalendar的[[微格式]]）&lt;br /&gt;
&lt;br /&gt;
== 歷史與設計 ==&lt;br /&gt;
iCalendar是由[[互联网工程任务组]]的[[日曆與計劃工作組]]設計（OpenText公司的Anik Ganguly主導），並由[[蓮花公司]]的Frank Dawson和[[微軟]]的Derik Stenerson發表。iCalendar本身是基於[[互聯網郵件協會（IMC）]]的[[vCalendar]]開發設計而來的。它通常是以文件名後綴為.ics或.ifb的文本文件保存的。現有標准是於2009年九月發布的[http://tools.ietf.org/html/rfc5545| RFC 5545]，上一個標準是[http://tools.ietf.org/html/rfc2445| RFC 2445] {{Wayback|url=http://tools.ietf.org/html/rfc2445%7C |date=20191017103324 }}。&lt;br /&gt;
&lt;br /&gt;
以.ics為後綴名的文件（在Apple Mac系統中使用&amp;quot;iCal&amp;quot;類型代碼），表示該文件包含了日曆和計劃信息。而以.ifb為後綴名的文件（在Apple Mac系統中使用&amp;quot;iFBf&amp;quot;類型代碼），表示該文件包含 了空閒和忙碌時間信息。&lt;br /&gt;
&lt;br /&gt;
通常iCalendar使用[[UTF-8]]字符編碼；但也可以使用[[MIME]]中的charset參數來指其它的字符編碼（如果它的傳送協議支持MIME的話）。&lt;br /&gt;
&lt;br /&gt;
在iCalendar文件中，每一行必須以[[CR+LF]]（十六進制代碼為0D0A）為結尾。每一行不得超過75[[字節]]/[[八位元組]]。如果一行數據長於這個限制，則必須換行；後面一行使用空格符（十六進制代碼為20）或者制表符（十六進制代碼為09）作開始，以表示本行內容是上面一行內容的繼續。內容數據中的換行符，可以反斜杠符&amp;#039;/&amp;#039;後跟數字（UTF-8中為5C 6E或5C 4E）來表示。&lt;br /&gt;
&lt;br /&gt;
iCalendar的MIME類型被定義為&amp;#039;&amp;#039;text/calendar&amp;#039;&amp;#039;。&lt;br /&gt;
&lt;br /&gt;
== 局限和發展 ==&lt;br /&gt;
iCalendar格式只是被設計用來傳送日曆和計劃表數據，如事件；而故意沒有定義操作這些數據的行為。因為，在編寫程序時需要協商如何操作它們。&lt;br /&gt;
&lt;br /&gt;
iCalendar本意是提供一種公共格式來定義開放的互聯網可交換的日曆和計劃表數據。當這些特性被廣泛支持應用後，很多性能問題逐漸顯現出來了。比如，大多數應用都不支持旅行（VJOURNAL）。&amp;quot;在標準中，循環重復的會議有一些含糊不清，這導致在現有不同的應用之間仍然無法真正地互動。&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iCalendar中的日曆無法兼容非[[格里高利曆]]，比如[[以色列]]的[[希伯來曆]]和[[沙特阿拉伯]]的[[伊斯曆]]都是[[陰曆]]。&lt;br /&gt;
&lt;br /&gt;
“日曆訪問協議”備忘錄（[http://tools.ietf.org/html/rfc4324| RFC 4324] {{Wayback|url=http://tools.ietf.org/html/rfc4324%7C |date=20191017103337 }}）首次嘗試建立一個統一的創建實時日曆系統。可能是因為過於複雜，這個協議最終被放棄了。&lt;br /&gt;
&lt;br /&gt;
無論如何，像[[GroupDav]]和[[CalDAV]]這些基於iCalendar的協議已經越來越廣泛地應用在客戶端和服務端軟件包中了。&lt;br /&gt;
&lt;br /&gt;
互联网工程任务组的日曆與計劃工作組 已經提交了關於iCalendar標准的附加修改提案。但這個工作組於2011年一月份被解散了。他們大部分工作重心轉移到了前一個標准的條款解釋。而後續的創新工作由[[日曆和計劃協會]]（簡稱為Calconnect）來完成。&lt;br /&gt;
&lt;br /&gt;
== 技術標準 ==&lt;br /&gt;
&lt;br /&gt;
=== 核心對象 ===&lt;br /&gt;
&lt;br /&gt;
iCalendar中的頂級元素是日曆和計劃核心對象，一組日曆和計劃信息。通常情況下，這些信息應該只包含單一的iCalendar對象。但可以聲明一個組包含多個iCalendar對象。&lt;br /&gt;
&lt;br /&gt;
第一行必須是&amp;quot;BEGIN:VCALENDER&amp;quot;，最後一行必須是&amp;quot;END:VCALENDER&amp;quot;；兩行之間數據稱之為&amp;quot;icalbody&amp;quot;。&lt;br /&gt;
&lt;br /&gt;
icalbody由一系列日曆屬性和一個以上的日曆組件組成。日曆屬性被應用於整個日曆。日曆組件則是由若干日曆屬性描述成的一個日曆語義。比如，日曆組件可以指定一個事件、一個待辦事項列表、一個旅行事項、時區信息、繁忙/空閒時間信息，或者一個警報。在許多協議實現（比如Google Calendar）中不允許出現空行。&lt;br /&gt;
&lt;br /&gt;
下在是一個簡單的iCalendar對象示例，它描述了[[法国国庆日]]，即從1997年七月14日 17:00到1997年七月15日 03:59:59的[[巴士底日]]。&lt;br /&gt;
&lt;br /&gt;
 BEGIN:VCALENDAR&lt;br /&gt;
 VERSION:2.0&lt;br /&gt;
 PRODID:-//hacksw/handcal//NONSGML v1.0//EN&lt;br /&gt;
 BEGIN:VEVENT&lt;br /&gt;
 UID:uid1@example.com&lt;br /&gt;
 DTSTAMP:19970714T170000Z&lt;br /&gt;
 ORGANIZER;CN=&amp;lt;nowiki&amp;gt;John Doe:MAILTO:john.doe@example.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 DTSTART:19970714T170000Z&lt;br /&gt;
 DTEND:19970715T035959Z&lt;br /&gt;
 SUMMARY:Bastille Day Party&lt;br /&gt;
 END:VEVENT&lt;br /&gt;
 END:VCALENDAR&lt;br /&gt;
&lt;br /&gt;
=== 事件（VEVENT） ===&lt;br /&gt;
VEVENT描述一個事件，在日曆上一系列計劃好的時間點。通常，當用戶接受一個日曆事件，這將導致在那個時間裡，用戶被認為是忙碌的。VEVENT可以包含一個VALARM對象來允許一個警報。事件應該有一個DTSTART來描述事件的開始時間，和一個DTEND來描述事件的結束時間。如果事件是循環的，則DTSTART應該設置第一個事件的開始時間。&lt;br /&gt;
&lt;br /&gt;
VEVENT同樣可以應用在沒有特定時間的日曆事件上，比如周年紀念日、每日提醒。&lt;br /&gt;
&lt;br /&gt;
如果你需要發送取消事件的請求。那麼在請求中事件組件中，UID屬性應該與原事件一致並且，下面這些屬性應該設置成cancel。&lt;br /&gt;
&lt;br /&gt;
 METHOD:CANCEL&lt;br /&gt;
 STATUS:CANCELLED&lt;br /&gt;
&lt;br /&gt;
為了發送事件的更新請求，除了設置UID和其它更新屬性值外。還需要設置新序列值&lt;br /&gt;
&lt;br /&gt;
 SEQUENCE:&amp;lt;新序列值&amp;gt;&lt;br /&gt;
&lt;br /&gt;
比如，第一個更新版本&lt;br /&gt;
&lt;br /&gt;
 SEQUENCE:1&lt;br /&gt;
&lt;br /&gt;
在Microsoft Outlook中，SUMMARY屬性應當與&amp;quot;Appointment&amp;quot;中的&amp;quot;Subject&amp;quot;項一致，DESCRIPTION 屬性緊跟著SUBJECT屬性。另外，Outlook 2003要求指定UID和DTSTAMP屬性。&lt;br /&gt;
&lt;br /&gt;
=== 待辦事項（VTODO） ===&lt;br /&gt;
VTODO描述一條待辦事項。&lt;br /&gt;
&lt;br /&gt;
下面的例子描述了一個應於1998年四月15日的待辦事項。屆時一個響鈴將會響起。在待辦事項完成前，將會一小時提醒一次，共提醒四次。SEQUENCE屬性顯示這條提醒在創建之後，還被修改了兩次。&lt;br /&gt;
&lt;br /&gt;
 BEGIN:VCALENDAR&lt;br /&gt;
 VERSION:2.0&lt;br /&gt;
 PRODID:-//ABC Corporation//NONSGML My Product//EN&lt;br /&gt;
 BEGIN:VTODO&lt;br /&gt;
 DTSTAMP:19980130T134500Z&lt;br /&gt;
 SEQUENCE:2&lt;br /&gt;
 UID:uid4@host1.com&lt;br /&gt;
 ACTION:AUDIO&lt;br /&gt;
 TRIGGER:19980403T120000&lt;br /&gt;
 ATTACH;FMTTYPE=&amp;lt;nowiki&amp;gt;audio/basic:http://example.com/pub/audio-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     files/ssbanner.aud&lt;br /&gt;
 REPEAT:4&lt;br /&gt;
 DURATION:PT1H&lt;br /&gt;
 END:VTODO&lt;br /&gt;
 END:VCALENDAR&lt;br /&gt;
&lt;br /&gt;
=== 旅行事項（VJOURNAL） ===&lt;br /&gt;
VJOURNAL是一個旅行事項。它們將一段描述文字關聯一個詳細的日曆日期上，這可以被用戶記錄活動和成長日誌，或者描述待辦事項的進展。VJOURNAL日曆組件不會影響日曆上的時間狀況，所以不會對空閒和繁忙狀態有任何影響。在實踐上，有很少的程序支持VJOURNAL項，不過也有存在一些實現。比如：Plum Canary&amp;#039;s Chirp軟件將VJOURNAL和VTODO一起使用。KDE中的[[KOrganizer]]也支持VJOURNAL。&lt;br /&gt;
&lt;br /&gt;
下面就是旅行事項的例子&lt;br /&gt;
 BEGIN:VCALENDAR&lt;br /&gt;
 VERSION:2.0&lt;br /&gt;
 PRODID:-//ABC Corporation//NONSGML My Product//EN&lt;br /&gt;
 BEGIN:VJOURNAL&lt;br /&gt;
 DTSTAMP:19970324T120000Z&lt;br /&gt;
 UID:uid5@host1.com&lt;br /&gt;
 ORGANIZER:&amp;lt;nowiki&amp;gt;MAILTO:jsmith@example.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 STATUS:DRAFT&lt;br /&gt;
 CLASS:PUBLIC&lt;br /&gt;
 CATEGORIES:Project Report, XYZ, Weekly Meeting&lt;br /&gt;
 DESCRIPTION:Project xyz Review Meeting Minutes\n&lt;br /&gt;
     Agenda\n1. Review of project version 1.0 requirements.\n2.&lt;br /&gt;
     Definition&lt;br /&gt;
     of project processes.\n3. Review of project schedule.\n&lt;br /&gt;
      Participants: John Smith, Jane Doe, Jim Dandy\n-It was&lt;br /&gt;
       decided that the requirements need to be signed off by&lt;br /&gt;
       product marketing.\n-Project processes were accepted.\n&lt;br /&gt;
      -Project schedule needs to account for scheduled holidays&lt;br /&gt;
       and employee vacation time. Check with HR for specific&lt;br /&gt;
       dates.\n-New schedule will be distributed by Friday.\n-&lt;br /&gt;
      Next weeks meeting is cancelled. No meeting until 3/23.&lt;br /&gt;
 END:VJOURNAL&lt;br /&gt;
 END:VCALENDAR&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;注意&amp;#039;&amp;#039;&amp;#039;: 这个例子中来自于[http://tools.ietf.org/html/rfc2445| RFC 2445] {{Wayback|url=http://tools.ietf.org/html/rfc2445%7C |date=20191017103324 }}。在这里将原文中的CATEGORY修正为CATEGORIES，这是原文中的一个错误。&lt;br /&gt;
&lt;br /&gt;
=== 空闲/繁忙时间（VFREEBUSY） ===&lt;br /&gt;
VFREEBUSY被用在 空闲/繁忙时间 设置请求，这种请求的回应，以及繁忙时间的发布中。&lt;br /&gt;
下面就是一个系统时间发布的例子。&lt;br /&gt;
&lt;br /&gt;
 BEGIN:VCALENDAR&lt;br /&gt;
 VERSION:2.0&lt;br /&gt;
 PRODID:-//RDU Software//NONSGML HandCal//EN&lt;br /&gt;
 BEGIN:VFREEBUSY&lt;br /&gt;
 ORGANIZER:&amp;lt;nowiki&amp;gt;MAILTO:jsmith@example.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 DTSTART:19980313T141711Z&lt;br /&gt;
 DTEND:19980410T141711Z&lt;br /&gt;
 FREEBUSY:19980314T233000Z/19980315T003000Z&lt;br /&gt;
 FREEBUSY:19980316T153000Z/19980316T163000Z&lt;br /&gt;
 FREEBUSY:19980318T030000Z/19980318T040000Z&lt;br /&gt;
 URL:&amp;lt;nowiki&amp;gt;http://www.example.com/calendar/busytime/jsmith.ifb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 END:VFREEBUSY&lt;br /&gt;
 END:VCALENDAR&lt;br /&gt;
&lt;br /&gt;
=== 其它组件类型 ===&lt;br /&gt;
其它组件类型还有&amp;#039;&amp;#039;&amp;#039;VTIMEZONE&amp;#039;&amp;#039;&amp;#039;（时区）和&amp;#039;&amp;#039;&amp;#039;VALARM&amp;#039;&amp;#039;&amp;#039;（警报）。还有一些组件允许包含其它组件（VALARM通常被包含于其它组件）。&lt;br /&gt;
&lt;br /&gt;
=== 发布更新 ===&lt;br /&gt;
当计划事件更改，UID字段将发布更新。首先事件创建时会生成一个[[UUID|全局唯一标识符]]作为UID。之后当有一个事件跟随这个UID发布，则认为这是早先事件的修改版本，并替换掉它。&lt;br /&gt;
&lt;br /&gt;
=== 日历扩展 ===&lt;br /&gt;
iCalendar支持私有扩展，即在属性名前冠以&amp;quot;X-&amp;quot;前缀。&lt;br /&gt;
&lt;br /&gt;
比如：&lt;br /&gt;
* X-RECURRENCE-ID&lt;br /&gt;
* X-EPOCAGENDAENTRYTYPE&lt;br /&gt;
* X-FUNAMBOL-AALARMOPTIONS&lt;br /&gt;
* X-FUNAMBOL-ALLDAY&lt;br /&gt;
* X-MICROSOFT-CDO-ALLDAYEVENT&lt;br /&gt;
* X-MICROSOFT-CDO-BUSYSTATUS&lt;br /&gt;
* X-WR-CALNAME&lt;br /&gt;
* X-WR-CALDESC&lt;br /&gt;
* X-WR-RELCALID&lt;br /&gt;
* X-WR-TIMEZONE&lt;br /&gt;
* X-PUBLISHED-TTL&lt;br /&gt;
&lt;br /&gt;
[[Category:文件格式]]&lt;br /&gt;
[[Category:日程管理軟體]]&lt;/div&gt;</summary>
		<author><name>~2026-21531-27</name></author>
	</entry>
</feed>