网络编程
位置:首页>> 网络编程>> Python编程>> 一文教你利用Python制作一个生日提醒

一文教你利用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
投稿

猜你喜欢

  • Xml_javascript分页实例:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.
  • 使用非常简单,小伙伴们只要修改对应的参数即可,这里就不多废话了,直接奉上实例吧。<div class="txt1"
  • 本文实例为大家分享了python opencv识别图像轮廓的具体代码,供大家参考,具体内容如下要求:用矩形或者圆形框住图片中的云朵(不要求全
  • js关于 byval 与 byref 二者区别: byval 传递数值,实参和形参分处不同的内存单元,互不干扰! byref 传递地址,实参
  • 一、变量1.变量•指在程序执行过程中,可变的量;•定义一个变量,就会伴随有3个特征,分别是内存ID、数据类型和变量值。•其他语言运行完之前,
  • 我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80
  • 作为一个从 PHP 转 Java 的人,发现 alibaba 的 arthas 很好用。通过 arthas 的 redefine 命令,可以
  • 首先我很不喜欢验证码这东西。但现在越来越多的网站使用验证码来抵御spam的冲击。太揪心了。背景介绍验证码的技术叫CAPTCHA验证,CAPT
  • Pycharm要激活至2099年,首先必须要先找到这个东西:JetbrainsCrack-2.6.10-release-enc.jar,我上
  • 我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like
  • 前言之前学习过binarytree第三方库,了解了它定义的各种基本用法。昨天在问答频道中做题时碰到一个关于二叉树的算法填空题,感觉代码不错非
  • 在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的
  • 问题如何遍历一个二叉树遍历二叉树就是访问二叉树的每一个节点二叉树父结点下先左访问,先序遍历(根左右)例如:遍历以下的二叉树遍历结果:ABDE
  • 一,前言我们现在拿到了一个十分庞大的数据集。是json文件,里面存储了将近十万个数据,现在要对其中的数据进行清洗处理。二,python模块i
  • 目录一、Python 中的作用域规则和嵌套函数二、定义闭包函数三、何时使用闭包?四、总结一、Python 中的作用域规则和嵌套函数每当执行一
  • 本文实例讲述了Python自定义主从分布式架构。分享给大家供大家参考,具体如下:环境:Win7 x64,Python 2.7,APSched
  • mysql数据库自不必说,现在很多程序开发应用及站长们常用到,jdbc可能一般会比较陌生一些,jdbc是什么意思?这里也会提到,最主要的是为
  • 写在前面最近有几个有趣的小想法想实践一下,希望使用低功耗、低成本的硬件跑一些持续性的独立的服务。最初的想法是入手一个树莓派得了,开发板尺寸小
  • 本文实例为大家分享了Python Web静态服务器的具体代码,供大家参考,具体内容如下功能:用户访问服务器可以返回指定页面 步骤: 1.创建
  • XML.DOM需求有一个表,里面数据量比较大,每天一更新,其字段可以通过xml配置文件进行配置,即,可能每次建表的字段不一样。上游跑时会根据
手机版 网络编程 asp之家 www.aspxhome.com