一文教你利用Python制作一个生日提醒
作者:星安果 发布时间:2022-12-12 09:20:43
标签:Python,生日,提醒
在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生!
这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样
本篇文章将教你利用 Python 制作一个简单的生日提醒
1. 实战
具体操作步骤如下
1-1 安装依赖
# 安装依赖
pip3 install zhdate
pip3 install pymysql
其中,zhdate 模块用于中国农历、阳历之间的转换,并且支持日期差额计算
项目地址:
https://github.com/CutePandaSh/zhdate
1-2 创建数据表
创建一条数据表
create table birthday
(
id int auto_increment
primary 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 pymysql
class 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).days
return 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))
...
来源:https://mp.weixin.qq.com/s/CKscpZObQQKXdhmQFGF1ug
0
投稿
猜你喜欢
- 本文介绍 SQL Server 2000 企业版的新功能 - 索引视图。讲解索引视图并讨论一些提高性能的具体方案。什么是索引视图?许多年来,
- 国旗是一个国家的象征,它可以反映一个国家的特色和传统,国旗起源于近代的欧洲,是一个国家主权意识不断增强后的必然产物,本文我们使用 Pytho
- 关于F.normalize计算理解动机最近多次看到该方法出现,于是准备了解一下,搜了后发现原来是所谓的L2 norm计算简介函数定义torc
- 网页的圆角处理,其实最开始的九宫格的表格处理是挺方便的,只是现在都不用表格布局了,自然就被非法取缔了。呵呵。微软的有VML画圆角,由于只是它
- 原始结构:Column1 Column2----------- ----------1 A1 B2 C2 D2 E3 F查询效果:Colum
- 1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运
- 一个简单的验证码爬取程序本文介绍了在Python2.7环境下爬取网站验证码:思路就是获取验证码对应的url,然后发起requst请求,读取该
- 函数可以参考:<% '注册论坛用户,参数说明 'username 用户登录名称 
- 本文实例讲述了python执行等待程序直到第二天零点的方法。分享给大家供大家参考。具体分析如下:如果需要通过python每天凌晨定时执行执行
- 1. DID(Differences-in-Differences)定义双重差分法,其主要被用于社会学中的政策效果评估。这种方法需要两个「差
- 基于底层数据来开发不难,无非是将用户输入变量作为筛选条件,将参数映射到 sql 语句,并生成一个 sql 语句然后再去数据库执行最后再利用
- 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时
- 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失。因此,如果你想要编写一些更大的程序,为准备解释器输入使用一
- 通常我们做网站,设计版面布局是第一步,如何做到版面布局具有创意又美观大方呢?这就需要一定的版面处理功底。让我们先来了解一下版面布局的步骤:一
- 本文实例讲述了python使用多线程不断刷新网页的方法。分享给大家供大家参考。具体如下:这段代码可以开通过个线程不断刷新指定的页面,可用于刷
- 数据类型:float — 浮点数可以精确到小数点后面15位int — 整型可以无限 * ool — 非零为true,零为falselist —
- 概述:可以将.py源代码转换成无需源代码的可执行文件(直接就可以运行的程序)因为有的时候Windows,Mac,Linux系统上并没有安装P
- 一、urllib库是什么?urllib库用于操作网页 URL,并对网页的内容进行抓取处理urllib包 包含以下几个模块:urllib.re
- 引言解释器环境:python3.5.1我们都知道python网络编程的两大必学模块socket和socketserver,其中的socket
- K-means(K均值)算法是最简单的一种聚类算法,它期望最小化平方误差注:为避免运行时间过长,通常设置一个最大运行轮数或最小调整幅度阈值,