MAC上的日历是可以通过文件导入或者URL导入的,利用这个功能,我实现了将一年中的国定休假和上班的日历同步了进来,如下图
实现方式是让日历导入.ics文件,该文件里面描述了所有节假日的数据
ics文件内容的格式如下
左边为标准格式,右边是为了方便解释格式化了一下好看清,大家在配置的时候应该使用左边的格式
-
BEGIN:VCALENDAR-> END:VCALENDAR
之间的内容为主体内容-
X-WR-CALNAME
:自定义日历名称 在导入的时候如果选择新建则会按这个名称建立标签 -
X-APPLE-CALENDAR-COLOR
:#540EB9 指定了该类别下事件的颜色
结合上面2个属性可以产生下图效果:
-
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的方式来同步数据