大家好,我是安果!

在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生!

这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样

本篇文章将教你利用 Python 制作一个简单的生日提醒

1. 实战

具体操作步骤如下

1-1  安装依赖

# 安装依赖
pip3 install zhdatepip3 install pymysql

其中,zhdate 模块用于中国农历、阳历之间的转换,并且支持日期差额计算

项目地址:

https://github.com/CutePandaSh/zhdate

1-2  创建数据表

创建一条数据表

create table birthday
(id        int auto_incrementprimary key,name      varchar(100)  not null comment '名称',yl_birth  varchar(100)  not null comment '阴历生日',remark    varchar(100)  null comment '备注',is_delete int default 0 null comment '0:正常  1:删除'
)comment '生日';

然后,将需要提醒用户的姓名、农历生日等数据写入

PS:这里阴历生日格式是 mm-dd,比如:10-25

1-3  查询数据

import pymysqlclass Birth(object):def __init__(self):self.db = pymysql.connect(host='**',user='root',password='**',database='xag')self.cursor = self.db.cursor()def __get_births(self):# 获取所有数据self.cursor.execute("""select name,yl_birth,remark from birthday where is_delete=0;""")datas = list(self.cursor.fetchall())

1-4  遍历,获取距离今天的天数

遍历上面的数据,将阴历转为阳历,然后计算出距离今天的天数

from zhdate import ZhDate...def __get_diff(self, birth):"""根据农历生日,获取当前日期距离的时间(天):param birth: 农历生日,格式:10-25:return:"""# 1、获取今日的农历日历now = str(datetime.now().strftime('%Y-%m-%d')).split("-")# 年、月、日year, month, day = int(now[0]), int(now[1]), int(now[2])# 1、获取阴历生日,转为阳历birth_month = int(birth.split("-")[0].strip())birth_day = int(birth.split("-")[-1].strip())birth_ying = ZhDate(year, birth_month, birth_day)# 转为阳历birth_yang = birth_ying.to_datetime()# 2、计算距离当前日期的时间间隔(天)today = datetime.now().strftime('%Y-%m-%d')d1 = datetime.strptime(today, '%Y-%m-%d')diff_day = (birth_yang-d1).daysreturn diff_day...# 遍历数据for item in datas:name = item[0]birth = item[1]nickname = item[2]diff = self.__get_diff(birth)
...

1-5  组装数据及消息推送

通过时间间隔,在提前一周、生日当天做一个提醒

最后,将组装好的消息通过企业微信机器人发送出去

import requests
import json...def send_wechat(self, msg: str):"""发送信息到企业微信"""# 这里填写你的机器人的webhook链接url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key**'headers = {"Content-Type": "text/plain"}data = {"msgtype": "text","text": {"content": msg}}# 发送消息requests.post(url, headers=headers, data=json.dumps(data))
...

2. 最后

我已经将文中的源码上传到公众号后台,回复关键字 birth 获取完整的源码!

推荐阅读

5 分钟,教你从零快速编写一个油猴脚本!

爬虫工具篇 - 必会用的 6 款 Chrome 插件

小技巧 | Chrome 插件如何完成剪切板的操作!

END

好文和朋友一起看~

5 分钟,教你用 Python 制作一个生日提醒!相关推荐

  1. python词云代码如何增加字数_3分钟教你用python制作一个简单词云

    原标题:3分钟教你用python制作一个简单词云 首先需要安装三个包: 1.制作英文字母的词云 效果图: 代码实现: 其中,test.txt文件内容如下 2.制作中文的词云 效果图: 代码实现: 其中 ...

  2. 3分钟教你用python制作一个简单词云

    首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip install jieba # 安装pip install wordcloud 1.制作英文字母的词云 ...

  3. 用python制作网盘_3分钟教你用python制作一个简单词云

    Python是一种编程语言,它使用对象,类和清晰的语法语言来帮助您创建,编辑和生成自己的应用程序.Python最强大的地方是第三方库,强大的类库让我们快速完成想要的功能,不再重复造轮子,调库侠跑得快. ...

  4. python英文词云代码_3分钟教你用python制作一个简单词云

    首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip install jieba # 安装pip install wordcloud 1.制作英文字母的词云 ...

  5. python初级教程 doc_3分钟教你用python制作一个简单词云|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip insta ...

  6. python制作词作云动画_3分钟教你用python制作一个简单词云

    首先需要安装三个包: 1.制作英文字母的词云 效果图: 代码实现: 其中,test.txt文件内容如下 2.制作中文的词云 效果图: 代码实现: 其中alice.txt文件内容:赤朽木叶家族的传说观后 ...

  7. python开发rpa_几步教你用 Python 制作一个 RPA 机器人!

    原标题:几步教你用 Python 制作一个 RPA 机器人! 作者 | 阿文 出品 | CSDN(ID:CSDNnews) 头图 | CSDN下载自东方IC 繁琐且重复的工作 在我们日常的工作中,有很 ...

  8. 元旦到了,手把手教你用 Python 制作一个炫酷烟花秀

    大家好,我是小张, 今天是2021 的最后一天,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失.比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前的小目标实现进度大概多少等等:做一个 ...

  9. python发朋友圈_10分钟教你用Python发一个高逼格的朋友圈

    程序猿声 你与千万程序猿在一起 01 前言 Hello~各位小伙伴们大家好.现在大家是越来越离不开手机,离不开微信了.每天打开手机的第一或者第二件事就是赶紧打开朋友圈看看有什么好玩的东西.偶尔忍不住了 ...

最新文章

  1. Springboot:开发时工程启动慢
  2. python爬b站评论_Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy
  3. 用vs写python和c++需要哪些工具包_从运行效率与开发效率比较Python和C++
  4. idea项目启动不起来_这些教育创业项目你还不知道吗,赶紧收藏起来吧!
  5. MySQL日期、字符串、数值型转换
  6. lisp的vla函数画矩形_利用Lisp做Tin三角网建模(源代码)
  7. WORD中使用类似苹果手机的字体Lucida Sans
  8. C#串口操作实际应用开发详解
  9. 集成应用|契约锁与100+管理软件实现集成应用
  10. 游戏设计的100个原理(11-15)
  11. 解决在Word安装Mendeley失败,提示“错误429:activex部件不能创建对象“问题
  12. 使用requests爬取携程网飞机票价格实例
  13. 以太网交换机和普通交换机主要的8大区别介绍
  14. 1055 mysql_mysql异常ERROR 1055 (42000)说明
  15. Python爬虫-抓取PC端网易云音乐评论(GUI界面)
  16. Revit模型转obj模型插件
  17. IFS系统功能清单之三——IFS成本核算
  18. win10专业版安装
  19. 基于CentOS7系统环境下的Snort3安装指南
  20. 年老时最后悔但为时已晚的几件事

热门文章

  1. 标签软件点打印弹出打印到文件怎么解决
  2. el-table 获取当前索引值,并展示在表格上
  3. 北邮和中南计算机,中南大学与北京邮电大学哪个好?
  4. 嵌入式系统【硬件层、STM32系统结构】
  5. 荔枝FM:异地多活IDC机房架构
  6. 2021-11-17 layui富文本编辑器的使用(layedit)
  7. 笔记本USB的PowerShare功能
  8. 网易大厦和他的邻居们
  9. Arduino——Nano—— 引脚分配图及定义详解
  10. 多张图片如何做成一个pdf?