在后台回复【阅读书籍】

即可获取python相关电子书~

Hi,我是山月。

2022年已经过去一周了,现在山月已经习惯把年份写成2022啦。也正是这个习惯,把我从2021年已经过去了的恍惚感中拉了出来。

希望新的一年,我们都能变的更优秀一点~

好啦,下面就跟着山月一起用Python做份日历吧。

现在,先想想你一般用的日历是什么样子的?有哪些元素?

这是山月根据日常用的日历制作的2022年1月的日历:

想得到完整代码的在后台回复【2022年日历】即可哦~

01

准备工作

1、用到的几个库:datetime, calendar, xlwt,borax。

其中xlwt和borax需要安装,直接用pip进行安装就可以了。

2、2022年放假安排

查看地址:http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm

根据放假安排,我们可以做出三个字典:festival_dict(节日信息),holidays_dict(节假日信息),switch_dict(调班信息)。

#2022年节日
festival_dict = {datetime.date(year=2022, month=1, day=1) : "元旦",datetime.date(year=2022, month=1, day=31) :  "除夕",datetime.date(year=2022, month=2, day=1) : "春节",datetime.date(year=2022, month=4, day=5) : "清明节",datetime.date(year=2022, month=5, day=1) : "劳动节",datetime.date(year=2022, month=6, day=3) : "端午节",datetime.date(year=2022, month=9, day=10) : "中秋节",datetime.date(year=2022, month=10, day=1) : "国庆节",}#2022年节假日
holidays_dict = {datetime.date(year=2022, month=1, day=1) : '元旦' , datetime.date(year=2022, month=1, day=2) : '元旦' , datetime.date(year=2022, month=1, day=3) : '元旦' ,datetime.date(year=2022, month=1, day=31): '春节',datetime.date(year=2022, month=2, day=1): '春节',datetime.date(year=2022, month=2, day=2): '春节',datetime.date(year=2022, month=2, day=3): '春节',datetime.date(year=2022, month=2, day=4): '春节',datetime.date(year=2022, month=2, day=5): '春节',datetime.date(year=2022, month=2, day=6): '春节',datetime.date(year=2022, month=4, day=3): '清明节',datetime.date(year=2022, month=4, day=4): '清明节',datetime.date(year=2022, month=4, day=5): '清明节',datetime.date(year=2022, month=4, day=30): '劳动节',datetime.date(year=2022, month=5, day=1): '劳动节',datetime.date(year=2022, month=5, day=2): '劳动节',datetime.date(year=2022, month=5, day=3): '劳动节',datetime.date(year=2022, month=5, day=4): '劳动节',datetime.date(year=2022, month=6, day=3): '端午节',datetime.date(year=2022, month=6, day=4): '端午节',datetime.date(year=2022, month=6, day=5): '端午节',datetime.date(year=2022, month=9, day=10) : '中秋节',datetime.date(year=2022, month=9, day=11) : '中秋节',datetime.date(year=2022, month=9, day=12) : '中秋节',datetime.date(year=2022, month=10, day=1): '国庆节',datetime.date(year=2022, month=10, day=2): '国庆节',datetime.date(year=2022, month=10, day=3): '国庆节',datetime.date(year=2022, month=10, day=4): '国庆节',datetime.date(year=2022, month=10, day=5): '国庆节',datetime.date(year=2022, month=10, day=6): '国庆节',datetime.date(year=2022, month=10, day=7): '国庆节',
}# 2022年调班
switch_dict = {datetime.date(year=2022, month=1, day=29): '春节',datetime.date(year=2022, month=1, day=30): '春节',datetime.date(year=2022, month=4, day=2): '清明节',datetime.date(year=2022, month=4, day=24): '劳动节',datetime.date(year=2022, month=5, day=7): '劳动节',datetime.date(year=2022, month=10, day=8): '国庆节' ,datetime.date(year=2022, month=10, day=9): '国庆节' ,
}# 获取三个字典中的所有键
all_festival_days = list(festival_dict.keys())
all_holidays_days = list(holidays_dict.keys())
all_switch_days = list(switch_dict.keys())

02

实现目标

1、得到2022年1月的日历

import calendar# 2022年1月
calendar_year = 2022
calendar_month = 1# 得出2022年1月的日历
calendar.setfirstweekday(firstweekday=0) #将星期一设置为一周第一天
list_date = calendar.monthcalendar(calendar_year, calendar_month)
print(list_date)

运行结果:

[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30], [31, 0, 0, 0, 0, 0, 0]]

可以看出,monthcalendar(year, month)返回的是按周划分的一个月中天数的列表,不是当前月份的天数为0。

其中返回的列表里是由6个列表组成的,这6个列表是由7个元素组成的,代表了周一到周末的7天。

2、得出日期对应的农历

from borax.calendars import LunarDate# 2022年1月2日
calendar_year = 2022
calendar_month = 1
date = 2#得出2022年1月2日的农历日期,格式只显示日期
lunar_date = LunarDate.from_solar_date(calendar_year, calendar_month, date)
lunar_day = lunar_date.strftime('%D')
print(lunar_day)

运行结果:

三十

我们翻看日历,可以发现2022年1月2日的农历是十一月三十。

那如果这个日期是节日,我们不想显示农历日期,而改用节日怎么办呢?

把我们准备的字典festival_dict(节日信息)用起来吧。

比如2022年1月31日是除夕:

import datetime# 2022年1月31日
calendar_year = 2022
calendar_month = 1
date = 31
date_day = datetime.date(year=calendar_year, month=calendar_month, day=date)festival_dict = {datetime.date(year=2022, month=1, day=1) : "元旦",...'''为了更直观,这里把字典的内容省去了,详情可以看上面'''}all_festival_days = list(festival_dict.keys())if date_day in all_festival_days:print(festival_dict[date_day])

运行结果:

除夕

这个时候就得到了节日啦。

3、节假日放假休息与调班

继续运用准备好的字典holidays_dict(节假日信息),switch_dict(调班信息)。

1)节假日休息

比如我们知道2022.1.3是元旦的最后一天,这一天应该要显示个【休】~

import datetime# 2022年1月3日
calendar_year = 2022
calendar_month = 1
date = 3
date_day = datetime.date(year=calendar_year, month=calendar_month, day=date)holidays_dict = {datetime.date(year=2022, month=1, day=1) : '元旦' , ...'''为了更直观,这里把字典的内容省去了,详情可以看上面'''
}all_holidays_days = list(holidays_dict.keys())if date_day in all_holidays_days:print('休')
else:print('休息啥,搬砖去')

运行结果:

让人非常高兴的一个字~

2)节假日调班

对于单休的人来说,最怕调班周末,这意味着要连续上两个星期的班。

2022年1月的29和30需要为春节调班。以29号为例,我们来看看怎么实现吧。

import datetime# 2022年1月29日
calendar_year = 2022
calendar_month = 1
date = 29
date_day = datetime.date(year=calendar_year, month=calendar_month, day=date)switch_dict = {datetime.date(year=2022, month=1, day=29): '春节',...'''为了更直观,这里把字典的内容省去了,详情可以看上面'''
}all_switch_days = list(switch_dict.keys())if date_day in all_switch_days:print('班')
else:print('休息啥,搬砖去')

运行结果:

bingo~

当然,在制作日历的过程里,我们要判断:如果是休息,则写个【休】;如果是调班,则写个【班】;否则就空白。

其实这样也很简单,用if...elif...else来判断就行啦。同学们可以自己想想,也可以看山月提供的完整代码。

4、日历显示

这里山月选择用excel把它呈现出来。用到的库是xlwt,关于xlwt的基础知识,山月之前已经分享过了,忘记了的同学请看

如何用Python做日历?相关推荐

  1. python用中文怎么说-如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  2. 如何用python做词云图_科学网—如何用Python做词云?(基础篇视频教程) - 王树义的博文...

    只需要花10几分钟,跟着教程完整做一遍,你就能自己用Python做出词云了. <如何用Python做词云?>图文版发布于2017年6月,是我数据科学系列教程中的第一篇. 目前仅简书一个平台 ...

  3. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  4. 用python做一个舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  5. python 英语分词_如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  6. 如何用python做后端写网页-flask框架

    如何用python做后端写网页-flask框架 什么是Flask 安装flask模块 Hello World 更深一步:数据绑定 后端传入数据 从前端获取数据 数据库连接 screen 创建后台 查看 ...

  7. 词云python灿烈_如何用Python做中文词云?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  8. 如何用 Python 做自动化测试

    本文来自作者 Vant 在 GitChat 上分享 「如何用 Python 做自动化测试」 编辑 | 哈比 一.Selenium 环境部署 1. window 环境部署 1.1 当前环境 Win10 ...

  9. 如何用Python做词云?(基础篇视频教程)

    只需要花10几分钟,跟着教程完整做一遍,你就能自己用Python做出词云了. (由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开.如有需要,请点击文末的"阅读原文"按钮 ...

最新文章

  1. OCR光学字符识别方法汇总(附开源代码)
  2. 实例讲解如何把表格变量传递到存储过程中
  3. vs2010 Qt插件报错Couldn't register all Qt4VSAddin command解决方案
  4. CSDN开播工具-主持人使用说明
  5. ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
  6. 面试被问项目上线没_面试官的最爱问“分布式”核心设计问题,没掌握的不妨来看看...
  7. python内置函数每个执行一次
  8. 清明上河图对计算机技术的启发,吴良镛院士:《清明上河图》启示的城市方向...
  9. 常微分方程的解析解(方法归纳)以及基于Python的二阶微分方程边值问题的数值算例实现
  10. 微型计算机b5040电源板,联想b5040一体机电源用普通ATX电源改的该法
  11. 天线巴伦制作和原理_一种2.4GHz巴伦天线的制作方法
  12. dns服务器理论基础知识
  13. buff系统 游戏中_原神buff状态有哪些 buff状态系统解析
  14. linux的ping命令含义,Linux ping命令详解
  15. 会员管理系统实战开发教程(三)-充值记录功能
  16. 基于大数据的动漫影视可视化分析系统
  17. mysql导入本地文件_Mysql透过txt文件导入本地数据_mysql
  18. 苹果研发柔性玻璃,iOS升级证件识别
  19. python天天向上续。尽管每天坚持,但人的能力发展并不是无限的,它符合特定模型。实例1的修改。改造实例代码1.1。回文数。
  20. mysql初始化失败解决方法

热门文章

  1. CDH安装时报错:/opt/cloudera/parcels/.flood/.../CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel does not exist
  2. php curl发邮件,使用PHP cURL通过Mailgun API发送带附件的电子邮件
  3. spark steaming的性能问题
  4. chm打开秒退_【CHM+】CHM+下载_CHM+教程 _正版CHM+下载 -爱应用
  5. nginx如何替换ssl证书
  6. Mac 运行 JNLP 文件
  7. 微信如何用软件测试是否被拉黑,怎么知道微信里对方把自己拉黑或删除了?微信被好友拉黑检测方法...
  8. win10 蓝牙忽然消失,设备管理器有未知USB设备描述符请求失败
  9. 云端赋能安全驱动,知道创宇2021新品发布季强势来袭!
  10. SpringBoot 实现自定义钉钉机器人