
背景需求
最近支付宝借呗有很多“借15000”“7天免息”的优惠券




以前我用excel计算过“借1天、2天、3天……”可以免息的最大本金数量


1、25元当天算1分利息
2、13-24元 借2天无利息(今天借明天1天后还)
3、9-12元 借3天无利息(今天借后天2天后还)
4、7-8元 借4天无利息(今天借后后天3天后还)
5、5-6元 借5天无利息(今天借4天后还)
6、4元 借7天无利息(今天借6天后还)
7、3元 借9天无利息(今天借8天还)
8、2元 借13天无利息(今天借12天还)
9、1元 借14天无利息(今天借4天还)
2017年时,我借过很多次25元(做小额资金周转,每天存50元银行一年定期),的确是第1天借款,第2天还款,就能免息,最多借50笔,1250元,但是很繁琐。而且账户最后也因为风险被禁止借款了。
一、免息1天和4天
今天看到了7天免息,

我想用AI来计算现在的借呗利息“6.48%”(不用excel测算)的免息金额、天数。







结论,今天借27元,明天还27元,可以免利息。(原来的利息我已经忘了,但是原来借的单笔时25元)
实际测试
借了27元,显示0元,至少确保了借款日和借款日第二天还款都是0元利息

再借了24、25、26元

第二天就还掉,0利息


如果借4天,最多的单笔借款金额



现在的利息下,最多9元借4天(周五=周一),原来是8元



存在问题:
1.借呗可以借50笔,借200元,可以拆分成9元1笔,借23笔,凑满201,借4天(包含借款日当天,利息算3天的周六周日周一)但是反复借款很累。
2.另外这样操作超过10次,借呗会被封掉(小额同样金额,涉及资金不安全)
二、免息7天

4月1日借款,4月2日开始计息1天(借款当天和第二天,合并算1天的利息,就是4月2日还款只要支付1天的利息,如果4月1日当天借款并当天还款也是付1天的利息,)
因为利息从借款第二日开始计算,所以从第2日开始算7天,2345678,就是4月8日还不算利息。
从借款日到还款日,加头加尾是8天

手机上写个备忘录提醒,到期早上跳出来,提示手动还掉本金,如果当天不还清,后面就要开始算利息了。


这个免息券目的还是鼓励借款,支付月度利息,而不是让人薅羊毛。所以一定要定日期备忘录,手动还款。




三、免息30天


马上订闹钟(30天,3月有31号,所以是4月17日的前一天)

薅羊毛生利息,但是要注意一定要准时还,不然就有利息了。
存在问题
1.如果只是7天免息,
(1)如果是1-23日借款,直接+7就可以获得还款日期
(2)如果是1-30日借款,扳8个手指头就可以计算(可能会跨月)
2.跨月或免息期超过30天。
(1)如果跨月(如借款日在下旬)7天,就没法直接加7天计算。可以手指计算。
(2)如果跨月(如借款日在中下旬)30天,手动点数不方便了。
所以写个程序
'''
借呗免息天数,计算那一天还可以免息
deep seek,阿夏
20260318
'''
from datetime import datetime, timedelta
import calendar
def get_weekday_name(weekday_num):
"""将星期数字转换为中文名称"""
weekdays = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
return weekdays[weekday_num]
def calculate_payment_date(year, month, day, interest_free_days):
"""计算还款日期"""
try:
# 创建消费日期
purchase_date = datetime(year, month, day)
# 计算还款日期(消费日期 + 免息天数)
payment_date = purchase_date + timedelta(days=interest_free_days)
# 设置还款时间为当天8:00
payment_date = payment_date.replace(hour=8, minute=0, second=0, microsecond=0)
return payment_date
except ValueError as e:
print(f"日期输入错误: {e}")
return None
def main():
print("=" * 50)
print("还款日期计算器")
print("=" * 50)
try:
# 获取用户输入
year = int(input("请输入年份(如2026): "))
month = int(input("请输入月份(如3): "))
day = int(input("请输入日期(如18): "))
interest_free_days = int(input("请输入免息天数(如7): "))
# 验证月份
if month < 1 or month > 12:
print("月份必须在1-12之间!")
return
# 验证日期
_, last_day = calendar.monthrange(year, month)
if day < 1 or day > last_day:
print(f"日期必须在1-{last_day}之间!")
return
# 验证免息天数
if interest_free_days < 0:
print("免息天数不能为负数!")
return
# 计算还款日期
payment_date = calculate_payment_date(year, month, day, interest_free_days)
if payment_date:
# 获取星期信息
weekday_num = payment_date.weekday() # 0代表星期一,6代表星期日
weekday_cn = get_weekday_name(weekday_num)
# 输出结果
print("\n" + "=" * 50)
print("计算结果:")
print("=" * 50)
print(f"消费日期:{year}年{month}月{day}日")
print(f"免息天数:{interest_free_days}天")
print(f"还款日期:{payment_date.year}年{payment_date.month}月{payment_date.day}日 {weekday_cn} 8:00前")
# 如果是周末,给出提示
if weekday_num >= 5: # 5=星期六, 6=星期日
print("\n【温馨提示】还款日是周末,建议提前还款")
except ValueError:
print("输入格式错误,请输入有效的数字!")
except KeyboardInterrupt:
print("\n程序已退出")
if __name__ == "__main__":
main()
免息7天

免息30天

用程序计算一下,便于做手机备忘录
其他提示:
不要在周五、周六、周日借免息,因为利息会少。
(1)4月1日(周三)借款15:00前买入,4月8日还(周三),一共8天,
4月1日(周三)买入,4月3日(周五)计息。实际获利6天。
(2)如果3月6日(周五)15:00前,3月13日还(周五),一共8天。
3月6日(周五)15:00前买入,实际计算利息从3月10日(周二)实际获利4天
(3)如果3月6日(周五)16:00后到3月8日(周日)买入(约等于就是周一买入的),就更加不值得了。因为利息从3月11日(周三)计算,实际获利3天。
所以不要周五(全天时段)、周六、周日买入。尽量选在周一、周二、周三、周四(都是15:00前)购买