一文教你利用Python制作一個(gè)生日提醒
在國(guó)內(nèi),大部分人都是過農(nóng)歷生日,然后借助日歷工具獲取農(nóng)歷日期對(duì)應(yīng)的陽(yáng)歷日期,以這一天來(lái)過生!
這里還有一個(gè)痛點(diǎn),即:每一年的農(nóng)歷生日對(duì)應(yīng)的陽(yáng)歷日期都不一樣
本篇文章將教你利用 Python 制作一個(gè)簡(jiǎn)單的生日提醒
1. 實(shí)戰(zhàn)
具體操作步驟如下
1-1 安裝依賴
#?安裝依賴 pip3?install?zhdate pip3?install?pymysql
其中,zhdate 模塊用于中國(guó)農(nóng)歷、陽(yáng)歷之間的轉(zhuǎn)換,并且支持日期差額計(jì)算
項(xiàng)目地址:
https://github.com/CutePandaSh/zhdate
1-2 創(chuàng)建數(shù)據(jù)表
創(chuàng)建一條數(shù)據(jù)表
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?'生日';
然后,將需要提醒用戶的姓名、農(nóng)歷生日等數(shù)據(jù)寫入
PS:這里陰歷生日格式是 mm-dd,比如:10-25
1-3 查詢數(shù)據(jù)
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): ????????#?獲取所有數(shù)據(jù) ????????self.cursor.execute(""" ?????????????????????????????select?name,yl_birth,remark?from?birthday?where?is_delete=0;""") ????????datas?=?list(self.cursor.fetchall())
1-4 遍歷,獲取距離今天的天數(shù)
遍歷上面的數(shù)據(jù),將陰歷轉(zhuǎn)為陽(yáng)歷,然后計(jì)算出距離今天的天數(shù)
from?zhdate?import?ZhDate ... ??def?__get_diff(self,?birth): ????????""" ????????根據(jù)農(nóng)歷生日,獲取當(dāng)前日期距離的時(shí)間(天) ????????:param birth:?農(nóng)歷生日,格式:10-25 ????????:return: ????????""" ????????#?1、獲取今日的農(nóng)歷日歷 ????????now?=?str(datetime.now().strftime('%Y-%m-%d')).split("-") ????????#?年、月、日 ????????year,?month,?day?=?int(now[0]),?int(now[1]),?int(now[2]) ????????#?1、獲取陰歷生日,轉(zhuǎn)為陽(yáng)歷 ????????birth_month?=?int(birth.split("-")[0].strip()) ????????birth_day?=?int(birth.split("-")[-1].strip()) ????????birth_ying?=?ZhDate(year,?birth_month,?birth_day) ????????#?轉(zhuǎn)為陽(yáng)歷 ????????birth_yang?=?birth_ying.to_datetime() ????????#?2、計(jì)算距離當(dāng)前日期的時(shí)間間隔(天) ????????today?=?datetime.now().strftime('%Y-%m-%d') ????????d1?=?datetime.strptime(today,?'%Y-%m-%d') ????????diff_day?=?(birth_yang-d1).days ????????return?diff_day ... ?#?遍歷數(shù)據(jù) ????????for?item?in?datas: ????????????name?=?item[0] ????????????birth?=?item[1] ????????????nickname?=?item[2] ????????????diff?=?self.__get_diff(birth) ...
1-5 組裝數(shù)據(jù)及消息推送
通過時(shí)間間隔,在提前一周、生日當(dāng)天做一個(gè)提醒
最后,將組裝好的消息通過企業(yè)微信機(jī)器人發(fā)送出去
import?requests import?json ... ???def?send_wechat(self,?msg:?str): ????????"""發(fā)送信息到企業(yè)微信""" ????????#?這里填寫你的機(jī)器人的webhook鏈接 ????????url?=?'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key**' ????????headers?=?{"Content-Type":?"text/plain"} ????????data?=?{ ????????????"msgtype":?"text", ????????????"text":?{ ????????????????"content":?msg ????????????} ????????} ????????#?發(fā)送消息 ????????requests.post(url,?headers=headers,?data=json.dumps(data)) ...
以上就是一文教你利用Python制作一個(gè)生日提醒的詳細(xì)內(nèi)容,更多關(guān)于Python生日提醒的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python+騰訊云服務(wù)器實(shí)現(xiàn)每日自動(dòng)健康打卡
本文主要介紹了通過Python+騰訊云服務(wù)器實(shí)現(xiàn)每日自動(dòng)健康打卡,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能,結(jié)合實(shí)例形式分析了Python基于微信itchat模塊實(shí)現(xiàn)針對(duì)撤回消息的查看功能相關(guān)操作技巧,需要的朋友可以參考下2019-08-08python簡(jiǎn)單實(shí)現(xiàn)獲取當(dāng)前時(shí)間
最近項(xiàng)目中經(jīng)常需要python去取當(dāng)前的時(shí)間,雖然不是很難,但是老是忘記,用一次丟一次,為了能夠更好的記住,我今天特意寫下python 當(dāng)前時(shí)間這篇文章,如果你覺的對(duì)你有用的話,可以收藏下。2016-08-08PyQt5如何將.ui文件轉(zhuǎn)換為.py文件的實(shí)例代碼
這篇文章主要介紹了PyQt5之如何將.ui文件轉(zhuǎn)換為.py文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05簡(jiǎn)單的Apache+FastCGI+Django配置指南
這篇文章主要介紹了簡(jiǎn)單的Apache+FastCGI+Django配置指南,這也是Python上最流行的web框架Django的最流行搭配環(huán)境:)需要的朋友可以參考下2015-07-07解決pytorch?model代碼內(nèi)tensor?device不一致的問題
這篇文章主要介紹了pytorch?model代碼內(nèi)tensor?device不一致的問題,本文給大家分享完美解決方案,對(duì)pytorch?tensor?device不一致問題解決方案感興趣的朋友跟隨小編一起看看吧2023-07-07Python圖像處理之使用OpenCV檢測(cè)對(duì)象顏色
OpenCV顏色檢測(cè)只是一個(gè)起點(diǎn),最終目標(biāo)是最終使用Python?3代碼在視頻流幀中定位彩色元素位置,下面這篇文章主要給大家介紹了關(guān)于Python圖像處理之使用OpenCV檢測(cè)對(duì)象顏色的相關(guān)資料,需要的朋友可以參考下2022-12-12