日历标准格式

ics文件

.ics这一扩展名指的是iCalendar(“日历数据交换标准”)文件格式和文件类型,是一种用于保存和交换日历信息的标准格式。iCalendar格式不依赖于任何网络协议,因此通过现有的各种服务(如HTTP、电子邮件、WebDAV等)就可以对日历数据进行交换和更新。

.ics文件通常是纯文本文件,可通过文本编辑程序打开和浏览。文件中包含日程表事件的数据,这些数据通过一个具有语义结构的基于XML的代码表示。.ics文件允许记录、交换、导入和更新可用的日期和时间,且允许在不改变待办事项清单的前提下预定和取消预约及计划。

iCalendar的RFC文档

BEGIN:VCALENDAR                                  # 日历开始
PRODID:-//139 Mail//calendar 2.3//EN            # 软件信息
VERSION:2.0                                     # 遵循的iCalendar版本号
CALSCALE:GREGORIAN                              # 历法:公历
BEGIN:VEVENT                                    # 事件开始
DTSTAMP:20230411T031706Z                        # 有 Method 属性时表示实例创建时间,没有时表示最后修订的日期时间
DTSTART:20230410T000000                         # 开始的时间
DTEND:20230411T000000                           # 结束的时间
SUMMARY:每周提醒,测试                              # 简介、标题
LOCATION:地点                                     # 地点
DESCRIPTION:备注L提前15分钟                       # 事件的描述
X-ALLDAY:1                                      # 是否是全天事件
UID:10-414111111-1591111111@139.com            # 唯一标识
ORGANIZER:mailto:1591111111@139.com            # 组织者
ATTENDEE;CN=11111@outlook.com;RSVP=TRUE:mailto:11111@outlook.com
ATTENDEE;CN=1111111@qq.com;RSVP=TRUE:mailto:1111111@qq.com
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,WE,FR
X-REQMY:EMAIL
BEGIN:VALARM                                    # alarm组件开始
TRIGGER:-PT15M                                  # 提前15分钟提醒
REPEAT:1
DURATION:PT1M
SUMMARY:每周提醒,测试
ACTION:DISPLAY                                  # 在ACTION:DISPLAY时,预期的效果是向用户显示“DESCRIPTION”属性的文本值。
DESCRIPTION:每周提醒,测试
END:VALARM                                      # alarm结束
END:VEVENT                                      # 事件结束END:VCALENDAR                                 # 日历结束

创建ics文件

导包

from icalendar import Calendar, Event, Alarm
from datetime import datetime
from pytz import UTC # timezone
import calendar
import time
import random
cal = Calendar()
cal.add('version', '2.0')
cal.add('prodid', '-//SWM's Calendar//SWM//CN')event = Event()
# 当前时间
now_time = datetime(time.localtime()[0],time.localtime()[1],time.localtime()[2],time.localtime()[3],time.localtime()[4],time.localtime()[5],tzinfo=UTC)
# 时间戳
event.add('dtstamp', now_time)
# 开始时间
event.add('dtstart', datetime(2022,4,4,tzinfo=UTC))
# 结束时间
event.add('dtend', datetime(2022,4,5,tzinfo=UTC))
event.add('X-ALLDAY', 1)
# 事件名
event.add('summary', '事件名')
event.add('description','详情描述')
tmp_t = time.strftime("%Y%m%d%H%M", time.localtime())
print(tmp_t)
event['uid'] = tmp_t+'@SWM'freq_of_recurrence = 'DAILY'
event.add('rrule', { 'FREQ': freq_of_recurrence, 'INTERVAL': 2})alarm = Alarm()
alarm.add("action", "DISPLAY")
alarm.add('description', "Reminder")
#alarm.add("trigger", datetime.timedelta(hours=-reminderHours))
# The only way to convince Outlook to do it correctly
reminderM = 10 # 提前10分钟提醒
alarm.add("TRIGGER;RELATED=START", "-PT{0}M".format(reminderM))event.add_component(alarm)
cal.add_component(event)f = open('example.ics', 'wb')
f.write(cal.to_ical())
f.close()

参考

  1. 日历标准格式
  2. Python icalendar.Event方法代码示例
  3. Python icalendar.Calendar类代码示例
  4. 使用Python解析文件(ICS / iCalendar)
  5. 使用python发送outlook约会提醒邮件

python生成微软日历可以使用的ics文件相关推荐

  1. python制作课程表提醒_使用python生成ical日历文件——将课程表导入到手机日历...

    1 importdatetime,os2 3 classEvent:4 """ 5 事件对象6 """ 7 def __init__(sel ...

  2. python生成日历_使用python生成ical日历文件——将课程表导入到手机日历

    1 importdatetime,os2 3 classEvent:4 """ 5 事件对象6 """ 7 def __init__(sel ...

  3. python生成100个随机数、写入文件后再读取显示内容_Python3 实现随机生成一组不重复数并按行写入文件...

    笔主在做一个项目要生成一组随机有序的整型数字,并按行输出到文本文件使用,恰好开始学习Python3,遂决定直接使用Python3解决 思路:与随机数相关的函数都要使用到random这个系统库,查看相关 ...

  4. linux系统python生成so_Python 项目转化为so文件实例

    思路是先将py转换为c代码,然后编译c为so文件,所以要安装以下内容: python 安装:cython pip install cython linux 安装:python-devel,gcc yu ...

  5. 导出日历(导出ICS文件)(原创)

    因一些朋友的需要  我把导出的整理了下 贴上来 Code  //导出 private string headerStr = "";         private string b ...

  6. python生成.exe文件

    python生成.exe,可以使用pyinstaller模块 在windows下,打开powershell,cd到当前目录,使用 pyinstaller -F test.py 会在当前文件夹下生成一个 ...

  7. 矿大课表ics文件生成小工具

    更新说明 请及时更新至最新1.2版 [ 重要修复!!!] 利用未知的方法修复了未知的bug(好滴吧-),使用时请不要关闭黑窗窗(控制台窗口) 2021.3.5 [新增]将登陆方式切换至融合门户登录,思 ...

  8. Python生成2022卡塔尔世界杯赛程日历订阅源代码,生成ics文件,带日历提醒

    Python生成2022卡塔尔世界杯赛程日历订阅源代码,不错过每一场比赛,直接运行main.py即可,首先从百度体育抓取最新2022卡塔尔世界杯赛程日历,已完赛部分爬取比分,然后生成两个ics文件,w ...

  9. 【Python杂记】:课程表生成日历程序(生成.ics文件可直接导入日历)

    项目场景: 临近开学,大家也基本收到了自己的课表,但是一想想天天还得看上什么课,还分哪些周上课,有些课从第一周上到第八周就结课了,有些要上到期末,于是像我这么懒的人,自然是要手机来提醒我的.于是这篇文 ...

最新文章

  1. Matlab与线性代数 -- 线性间隔向量
  2. [译] React 路由和 React 组件的爱恨情仇
  3. c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...
  4. SpringMVC的环境搭建
  5. 你应该如何正确健壮后端服务?
  6. 【ABAP】销售订单Billing Plan创建
  7. 安装SandcastleInstaller
  8. Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组
  9. JdbcTemplate操作
  10. vue-cli构建项目使用 less
  11. 如何让php支持mysql的,怎么让php支持MySql
  12. Power BI 数据分析可视化软件入门教程
  13. 3种夸克有多少组合?
  14. 激光传感器构建栅格地图
  15. Android多媒体之GL-ES战记第一集--勇者集结
  16. Android渲染时间 太长,Android性能优化之渲染篇
  17. 无法访问gcr.io的解决办法
  18. python提取excel中的表格并保存图片
  19. 朋友圈长文不折叠神器
  20. SpringBoot如何正确控制bean的加载顺序

热门文章

  1. 知乎用户画像与实时数据架构实践
  2. 二次剩余(学习笔记)
  3. NTP校时服务器(GPS北斗卫星校时系统)组成与配置
  4. Unix/Linux编程:sigaction
  5. 判断一个字符串是否对称
  6. 中数智汇过会440天仍未注册,IPO之路吉凶难定
  7. html图片形状,用CSS代码写出的各种形状图形的方法
  8. springboot留守儿童爱心网站
  9. 2020-11-10,待业快乐
  10. matlab设计一个三角波合成实验,(精选)信号与系统实验(MATLAB 西电版)实验10 周期信号的合成与分解课件.ppt...