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的方式来同步数据

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,481评论 0 5
  • 去年有段时间得空,就把谷歌GAE的API权威指南看了一遍,收获颇丰,特别是在自己几乎独立开发了公司的云数据中心之后...
    骑单车的勋爵阅读 20,711评论 0 41
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,720评论 0 8
  • 人生——我们都爱用十年去划界限,力证沧海桑田的变化。‘十年’我们对它有特殊的情结,书上的故事也好、电影也罢,语言的...
    淡语52188阅读 385评论 6 8
  • 进入复习阶段了,默写资料接踵而至,大量的默写,又有很多不会,是不是有点焦头烂额,力不从心? 我们...
    擎天柱_6e9a阅读 153评论 0 1