E文好的话建议去看直接去看IETF的RFC5545定义;
中文版:
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%[email protected]第 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周”这样猎奇的重复,所以对本人并没有什么用处
还是老老实实一个一个添加吧……不过删除起来也相应的麻烦了许多。
- 我
们尚不知道那天所看到的花的名字DTSTAMP的用处
最后补一些相关代码段(javascript):
$vCalArea.append('BEGIN:VCALENDARnPRODID:-//HeYSH//THU Calendar 0.0002//CNnVERSION:2.0nCALSCALE:GREGORIANnMETHOD:PUBLISHnX-WR-CALNAME:课程表nX-WR-TIMEZONE:Asia/ShanghainX-WR-CALDESC:nBEGIN:VTIMEZONEnTZID:Asia/ShanghainX-LIC-LOCATION:Asia/ShanghainBEGIN:STANDARDnTZOFFSETFROM:+0800nTZOFFSETTO:+0800nTZNAME:CSTnDTSTART:19700101T000000nEND:STANDARDnEND:VTIMEZONEn');
/***************生成文件头****************/
$vCalArea.append("BEGIN:VEVENTnDTSTART;TZID=Asia/Shanghai:" + strBT + "nDTEND;TZID=Asia/Shanghai:" + strET + "nDTSTAMP:20120622T160054ZnUID:" + uid + "nCREATED:20120622T154824ZnDESCRIPTION:" + Data.courseInfo + "nLAST-MODIFIED:20120622T160041ZnLOCATION:" + Data.place + "nSTATUS:CONFIRMEDnSUMMARY:" + Data.courseName + "nEND:VEVENTn")
/****************VEVENT部分***************/
$vCalArea.append('END:VCALENDAR');
/****************文件尾****************/