当前位置: 首页 > 工具软件 > iCalendar > 使用案例 >

iCal及iCalendar说明

夹谷和裕
2023-12-01

标准

RFC 4791: Calendaring Extensions to WebDAV (CalDAV)

说明

https://www.kanzaki.com/docs/ical/

什么是ical文件

     iCal 又称 iCalendar,是一种标准的互联网日历格式,让用户能够在各种计算机和各种程序之间创建和共享电子日历。
    一言蔽之,可以理解成可以向日历导入事件的文件。

具体格式

  1. ical文件以.ics结尾

  2. ical文件的编写格式

BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VTIMEZONE
   LAST-MODIFIED:20040110T032845Z
   TZID:US/Eastern
   BEGIN:DAYLIGHT
   DTSTART:20000404T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   BEGIN:STANDARD
   DTSTART:20001026T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   END:VTIMEZONE
   BEGIN:VEVENT
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060102T120000
   DURATION:PT1H
   RRULE:FREQ=DAILY;COUNT=5
   SUMMARY:Event #2
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   BEGIN:VEVENT
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060104T140000
   DURATION:PT1H
   RECURRENCE-ID;TZID=US/Eastern:20060104T120000
   SUMMARY:Event #2 bis
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   END:VCALENDAR

例子1

BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:北京游玩安排
X-APPLE-CALENDAR-COLOR:#540EB9
X-WR-TIMEZONE:Asia/Shanghai
BEGIN:VEVENT
UID:2020-0124-0001
DTSTART;VALUE=DATE:20200807T165000
DTEND;VALUE=DATE:20200807T165500
SUMMARY:购物
DESCRIPTION:买特产
LOCATION:王府井     
SEQUENCE:0
BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR

为了方便理解,我将代码写出下面的格式,但是实际上,上面的代码格式是正确的

BEGIN:VCALENDAR               #固定写法,ical文件以BEGIN:VCALENDAR开头        
|  VERSION:2.0                #固定写法
|  X-WR-CALNAME:北京游玩安排   #日历名称
|  X-APPLE-CALENDAR-COLOR:#540EB9  #该日历事件的颜色
|  X-WR-TIMEZONE:Asia/Shanghai     #时区,中国默认写Asia/Shanghai
|  
|  BEGIN:VEVENT                                  #固定写法,表示一个日历事件的开始
|  |  UID:2020-0124-0001                         #这个日历事件的id,是唯一的,可自定义
|  |  DTSTART;VALUE=DATE:20200807T165000         #事件开始时间:年-月-日-T-时-分-秒
|  |  DTEND;VALUE=DATE:20200807T165500           #事件结束时间:年-月-日-T-时-分-秒
|  |  SUMMARY:购物                               #事件名称
|  |  DESCRIPTION:买特产                         #事件描述(备注)
|  |  LOCATION:北京王府井                        #事件地点
|  |  SEQUENCE:0                                 #固定写法
|  |  BEGIN:VALARM                               #设置闹钟提醒,这里设置的是无需闹钟提醒
|  |  |  TRIGGER;VALUE=DATE-TIME:19760401T005545Z
|  |  |  ACTION:NONE
|  |  END:VALARM
|  END:VEVENT                                    #固定写法,表示一个日历事件的结束
|
END:VCALENDAR                #固定写法,ical文件以END:VCALENDAR结尾

当想在一个日历中添加多个时间时,只需要在BEGIN:VCALENDAR----END:VCALENDAR之间按照BEGIN:VEVENT----END:VEVENT代码的格式添加日历事件即可。

例子2

ical 格式大概是这样的:

BEGIN:VCALENDAR
PRODID:-//HeYSH//HeYSH Calendar 70.9054//CN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:课程表
X-WR-TIMEZONE:Asia/Shanghai
X-WR-CALDESC:
BEGIN:VTIMEZONE
TZID:Asia/Shanghai
X-LIC-LOCATION:Asia/Shanghai
BEGIN:STANDARD
TZOFFSETFROM:+0800
TZOFFSETTO:+0800
TZNAME:CST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=Asia/Shanghai:20120901T092000
DTEND;TZID=Asia/Shanghai:20120901T105000
DTSTAMP:20120622T160054Z
UID:%u4F20%u70ED%u5B66%20%u5BF9%u6D41%u5B9E%u9A8C35@第 1 次
CREATED:20120622T154824Z
DESCRIPTION:教师:王五n
LAST-MODIFIED:20120622T160041Z
LOCATION:大礼堂
STATUS:CONFIRMED
SUMMARY:实验2
END:VEVENT
END:VCALENDAR

基本上只要修改中文部分的内容就好了

tips:

  • PRODID 按照格式随意改就好
  • UID 是一件事情的绝对标识,对格式没有要求,只要不重复即可
  • 重复事件可用 RRLUE 字段,具体见所附文档。但是好像不支持 “1,2,5-9,13,16 周” 这样猎奇的重复
 类似资料: