python
复制代码
import redis, calendar
from datetime import datetime,date
re = redis.Redis(host='127.0.0.1', port=6379, db=0)
# 获取指定年月的最大天数
def getDays(year, month):
max_days = calendar.monthrange(year, month)[1]
print("%d年%d月份的最大天数为: %d" % (year, month, max_days))
return max_days
# 签到初始化
def init(uid, year, month, day):
key = 'sign:%d:%d:%d' % (uid, year, month)
if re.exists(key) == 0: # 首次签到时初始化
maxDays = getDays(year, month)
for i in range(1, maxDays+1):
re.setbit(key, i, 0)
print('初始化' , key, i)
re.setbit(key, day, 1)
# 统计本次签到的连续签到次数
def static(uid, year, month, day):
cc = 0
key = 'sign:%d:%d:%d' % (uid, year, month)
for i in range(1, day+1):
res = re.getbit(key, i)
if res == 0:
cc = 0
else:
cc += 1
return cc
# 用户本月的总的签到次数
def getAll(uid, year, month):
key = 'sign:%d:%d:%d' % (uid, year, month)
return re.bitcount(key)
try:
today = str(date.today())
year, month, day = list(map(int, today.split('-')))
uid = 1
init(uid, year, month, day)
# cc = re.bitcount('uid1') # 统计签到的总次数
cc = static(uid, year, month, day)
all = getAll(uid, year, month)
print('uid:%d 本次连续签到的次数为:%d, %d 月份的签到次数为:%d' % (uid, cc, month, all))
except Exception as e:
print(f"连接失败: {e}")