MAC日历.ICS文件结构说明 如何同步节假日到日历?

MAC上的日历是可以通过文件导入或者URL导入的,利用这个功能,我实现了将一年中的国定休假和上班的日历同步了进来,如下图


image.png

实现方式是让日历导入.ics文件,该文件里面描述了所有节假日的数据
ics文件内容的格式如下
左边为标准格式,右边是为了方便解释格式化了一下好看清,大家在配置的时候应该使用左边的格式

image.png
  • BEGIN:VCALENDAR-> END:VCALENDAR 之间的内容为主体内容

    • X-WR-CALNAME:自定义日历名称 在导入的时候如果选择新建则会按这个名称建立标签
    • X-APPLE-CALENDAR-COLOR:#540EB9 指定了该类别下事件的颜色
      结合上面2个属性可以产生下图效果:
      image.png
    • VERSION:2.0 写死2.0即可
    • X-WR-TIMEZONE:Asia/Shanghai 你所在地方的时间区域(这行可以删除不写)
  • 每一个 BEGIN:VEVENT -> END:VEVENT 区间的模块描述了一个日历事件
    我们只需要将国定日期

    • UID:表示这个日历事件的唯一ID,建议不要重复,可以自定义
    • DTSTART;VALUE=DATE:20200124 事件开始时间,格式为年月日
    • DTEND;VALUE=DATE:20200124 事件结束时间,我们写同一天即可
    • SUMMARY:除夕 这里就是事件名称,这里我们就写节日名称
    • SEQUENCE:0 写0即可
    • BEGIN:VALARM->END:VALARM:区间的内容为设置提醒闹钟,我们不需要闹钟,所以这里固定的写法复制即可

按照上面格式,这里举例将2020年的春节和除夕来测试一把,数据如下:
将下面的配置保存为 xxx.ics 文件,然后打开日历,找到左上角文件-导入 看看效果

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:20200124
DTEND;VALUE=DATE:20200124
SUMMARY:除夕     
SEQUENCE:0
BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACTION:NONE
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:2020-0125-0001
DTSTART;VALUE=DATE:20200125
DTEND;VALUE=DATE:20200125
SUMMARY:春节     
SEQUENCE:0
BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR

最后知道了原理后,我们可以写一个接口来获取这个配置数据,然后通过日历中订阅URL的方式来同步数据

你可能感兴趣的:(MAC日历.ICS文件结构说明 如何同步节假日到日历?)