一文教你利用Python制作一個(gè)生日提醒
在國(guó)內(nèi),大部分人都是過(guò)農(nóng)歷生日,然后借助日歷工具獲取農(nóng)歷日期對(duì)應(yīng)的陽(yáng)歷日期,以這一天來(lái)過(guò)生!
這里還有一個(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ù)寫(xiě)入
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ù)及消息推送
通過(guò)時(shí)間間隔,在提前一周、生日當(dāng)天做一個(gè)提醒
最后,將組裝好的消息通過(guò)企業(yè)微信機(jī)器人發(fā)送出去
import?requests
import?json
...
???def?send_wechat(self,?msg:?str):
????????"""發(fā)送信息到企業(yè)微信"""
????????#?這里填寫(xiě)你的機(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)文章
Anaconda安裝pytorch及配置PyCharm 2021環(huán)境
小編使用的是python3.8版本,為了防止訪問(wèn)量過(guò)大導(dǎo)致http連接失敗,所以采用本地安裝,具體安裝方法本文給大家詳細(xì)介紹,在文章底部給大家提到了PyCharm 2021配置環(huán)境的方法,感興趣的朋友一起看看吧2021-06-06

