1 importdatetime,os2

3 classEvent:4 """

5 事件对象6 """

7 def __init__(self,kwargs):8 self.event_data =kwargs9

10 def __turn_to_string__(self):11 self.event_text = "BEGIN:VEVENT\n"

12 for item,data inself.event_data.items():13 item = str(item).replace("_","-")14 if item not in ["ORGANIZER","DTSTART","DTEND"]:15 self.event_text += "%s:%s\n"%(item,data)16 else:17 self.event_text += "%s;%s\n"%(item,data)18 self.event_text += "END:VEVENT\n"

19 returnself.event_text20

21 classCalendar:22 """

23 日历对象24 """

25 def __init__(self,calendar_name="My Calendar"):26 self.__events__ ={}27 self.__event_id__ =028 self.calendar_name =calendar_name29

30 def add_event(self,**kwargs):31 event =Event(kwargs)32 event_id = self.__event_id__

33 self.__events__[self.__event_id__] =event34 self.__event_id__ += 1

35 returnevent_id36

37 def modify_event(self,event_id,**kwargs):38 for item,data inkwargs.items():39 self.__events__[event_id].event_data[item] =data40

41 defremove_event(self,event_id):42 self.__events__.pop(event_id)43

44 defget_ics_text(self):45 self.__calendar_text__ = """BEGIN:VCALENDAR\nPRODID:-//ZHONG_BAI_REN//APPGENIX-SOFTWARE//\nVERSION:2.0\nCALSCALE:GREGORIAN\nMETHOD:PUBLISH\nX-WR-CALNAME:%s\nX-WR-TIMEZONE:null\n"""%self.calendar_name46 for key,value in self.__events__.items():47 self.__calendar_text__ += value.__turn_to_string__()48 self.__calendar_text__ += "END:VCALENDAR"

49 return self.__calendar_text__

50

51 defsave_as_ics_file(self):52 ics_text =self.get_ics_text()53 open("%s.ics"%self.calendar_name,"w",encoding="utf8").write(ics_text)#使用utf8编码生成ics文件,否则日历软件打开是乱码54

55 defopen_ics_file(self):56 os.system("%s.ics"%self.calendar_name)57

58 defadd_event(cal, SUMMARY, DTSTART, DTEND, DESCRIPTION, LOCATION):59 """

60 向Calendar日历对象添加事件的方法61 :param cal: calender日历实例62 :param SUMMARY: 事件名63 :param DTSTART: 事件开始时间64 :param DTEND: 时间结束时间65 :param DESCRIPTION: 备注66 :param LOCATION: 时间地点67 :return:68 """

69 time_format = "TZID=Asia/Shanghai:{date.year}{date.month:0>2d}{date.day:0>2d}T{date.hour:0>2d}{date.minute:0>2d}00"

70 dt_start = time_format.format(date=DTSTART)71 dt_end = time_format.format(date=DTEND)72 create_time = datetime.datetime.today().strftime("%Y%m%dT%H%M%SZ")73 cal.add_event(74 SUMMARY=SUMMARY,75 ORGANIZER="CN=My Calendar:mailto:nobody@gmail.com",76 DTSTART=dt_start,77 DTEND=dt_end,78 DTSTAMP=create_time,79 UID="{}-11@appgenix-software.com".format(create_time),80 SEQUENCE="0",81 CREATED=create_time,82 DESCRIPTION=DESCRIPTION,83 LAST_MODIFIED=create_time,84 LOCATION=LOCATION,85 STATUS="CONFIRMED",86 TRANSP="OPAQUE"

87 )88

89 if __name__ == '__main__':90 calendar = Calendar(calendar_name="test")91 add_event(calendar,92 SUMMARY="测试",93 DTSTART=datetime.datetime(year=2019,month=2,day=19,hour=21,minute=21,second=00),94 DTEND=datetime.datetime(year=2019,month=2,day=19,hour=21,minute=30,second=00),95 DESCRIPTION="测试事件",96 LOCATION="我也不知道在哪儿")97 print(calendar.get_ics_text())98 calendar.save_as_ics_file()

python生成日历_使用python生成ical日历文件——将课程表导入到手机日历相关推荐

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

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

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  5. python打印一年的日历_使用Python打印日历

    在本教程中,我们将学习如何使用Python的日历模块打印月份和年份的日历.在Python中这很简单.我们需要年和月的数字.而已. 让我们看看如何打印年历.请按照以下步骤打印年历.导入日历模块. 初始化 ...

  6. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  9. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

最新文章

  1. 手机安装(Fiddler)证书
  2. 阿里云mysql5.7 窗口函数_关于阿里云centos版本,mysql5.7的一些注意事项
  3. asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
  4. Foxconn Core Concept
  5. SpringBoot项目中图片的引用
  6. Login.jsp登录页面代码(css+bootstrap)
  7. 华硕笔记本k555拆机图解_华硕k45vd笔记本拆机教程,清理灰尘,更换键盘
  8. 入门HTML之表格属性bgcolor background bordercolor(light dark)
  9. python小白使用pycharm新建项目,import什么内置包都报错
  10. 安装qtp时,出现I/O设备错误的报错,该怎么办呢?
  11. ISO20000信息技术服务管理体系认证条件
  12. ブランドは、同社とその製品、サービス
  13. el-upload上传文件
  14. 根据经纬度查询,mysql查询计算经纬度
  15. Inspection info: This inspection analyzes method control and data flow to report possible conditions
  16. 设置Visual Studio颜色主题
  17. WPS如何并排放置两张图片_【爱馨心理协会】WPS抒馨语amp;PS秘诀渡时光——记爱馨心理协会培训会...
  18. 游戏陪玩平台源码开发,依赖收集和触发的实现
  19. 给入职三五年程序员的建议,看蚂蚁金服离职人员的个人经历及总结!
  20. 用手机也能轻松玩转MATLAB编程

热门文章

  1. 前端面试查漏补缺--(十) 前端鉴权
  2. [渝粤教育] 中国地质大学 测试技术 复习题
  3. 【冬察冬见】【管理知行解决方案手册】【团队治理】周报撰写
  4. html逐帧动画,谈谈网页中实现逐帧动画
  5. 知识产权如何实现在线公证?
  6. oracle中rac是什么意思,学习猿地-oracle rac是什么?
  7. 计算机如何设置u盘图标,如何将U盘的图标改成自己喜欢的图案,程序员:这段代码拿去试试...
  8. 数值计算方法(停更笔记)
  9. 一个算法工程师在技术方面的反思!
  10. pycharm使用anaconda