python生成微软日历可以使用的ics文件
日历标准格式
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()
参考
- 日历标准格式
- Python icalendar.Event方法代码示例
- Python icalendar.Calendar类代码示例
- 使用Python解析文件(ICS / iCalendar)
- 使用python发送outlook约会提醒邮件
python生成微软日历可以使用的ics文件相关推荐
- python制作课程表提醒_使用python生成ical日历文件——将课程表导入到手机日历...
1 importdatetime,os2 3 classEvent:4 """ 5 事件对象6 """ 7 def __init__(sel ...
- python生成日历_使用python生成ical日历文件——将课程表导入到手机日历
1 importdatetime,os2 3 classEvent:4 """ 5 事件对象6 """ 7 def __init__(sel ...
- python生成100个随机数、写入文件后再读取显示内容_Python3 实现随机生成一组不重复数并按行写入文件...
笔主在做一个项目要生成一组随机有序的整型数字,并按行输出到文本文件使用,恰好开始学习Python3,遂决定直接使用Python3解决 思路:与随机数相关的函数都要使用到random这个系统库,查看相关 ...
- linux系统python生成so_Python 项目转化为so文件实例
思路是先将py转换为c代码,然后编译c为so文件,所以要安装以下内容: python 安装:cython pip install cython linux 安装:python-devel,gcc yu ...
- 导出日历(导出ICS文件)(原创)
因一些朋友的需要 我把导出的整理了下 贴上来 Code //导出 private string headerStr = ""; private string b ...
- python生成.exe文件
python生成.exe,可以使用pyinstaller模块 在windows下,打开powershell,cd到当前目录,使用 pyinstaller -F test.py 会在当前文件夹下生成一个 ...
- 矿大课表ics文件生成小工具
更新说明 请及时更新至最新1.2版 [ 重要修复!!!] 利用未知的方法修复了未知的bug(好滴吧-),使用时请不要关闭黑窗窗(控制台窗口) 2021.3.5 [新增]将登陆方式切换至融合门户登录,思 ...
- Python生成2022卡塔尔世界杯赛程日历订阅源代码,生成ics文件,带日历提醒
Python生成2022卡塔尔世界杯赛程日历订阅源代码,不错过每一场比赛,直接运行main.py即可,首先从百度体育抓取最新2022卡塔尔世界杯赛程日历,已完赛部分爬取比分,然后生成两个ics文件,w ...
- 【Python杂记】:课程表生成日历程序(生成.ics文件可直接导入日历)
项目场景: 临近开学,大家也基本收到了自己的课表,但是一想想天天还得看上什么课,还分哪些周上课,有些课从第一周上到第八周就结课了,有些要上到期末,于是像我这么懒的人,自然是要手机来提醒我的.于是这篇文 ...
最新文章
- Matlab与线性代数 -- 线性间隔向量
- [译] React 路由和 React 组件的爱恨情仇
- c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...
- SpringMVC的环境搭建
- 你应该如何正确健壮后端服务?
- 【ABAP】销售订单Billing Plan创建
- 安装SandcastleInstaller
- Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组
- JdbcTemplate操作
- vue-cli构建项目使用 less
- 如何让php支持mysql的,怎么让php支持MySql
- Power BI 数据分析可视化软件入门教程
- 3种夸克有多少组合?
- 激光传感器构建栅格地图
- Android多媒体之GL-ES战记第一集--勇者集结
- Android渲染时间 太长,Android性能优化之渲染篇
- 无法访问gcr.io的解决办法
- python提取excel中的表格并保存图片
- 朋友圈长文不折叠神器
- SpringBoot如何正确控制bean的加载顺序
热门文章
- 知乎用户画像与实时数据架构实践
- 二次剩余(学习笔记)
- NTP校时服务器(GPS北斗卫星校时系统)组成与配置
- Unix/Linux编程:sigaction
- 判断一个字符串是否对称
- 中数智汇过会440天仍未注册,IPO之路吉凶难定
- html图片形状,用CSS代码写出的各种形状图形的方法
- springboot留守儿童爱心网站
- 2020-11-10,待业快乐
- matlab设计一个三角波合成实验,(精选)信号与系统实验(MATLAB 西电版)实验10 周期信号的合成与分解课件.ppt...