Python实现打印给定的两个日期之间所有月份的列表(如2019年6月,2019年7月)

需求描述:

我在开发博客的过程中想实现类似csdn的按月份给博客归档,但是我的数据库表里没有维护相关的字段,所以每个月的博客数据需要后期查询呈现。那怎么获取需要在页面显示的年月列表呢?我想要的效果如下图所示:

同时,在我的数据库表里,每位博主都有一个账号注册时间的字段。所以这个问题就变成了,已知开始的时间点(该博主注册的时间)和结束的时间点(当前时间),如何打印出这个区间内所有的月份。

代码实现:

from datetime import datetime

#这是起始时间,假设某位博主是2018年10月6日注册的
start=datetime(2018,10,6)
#这是结束时间,也就是当前的时间
end=datetime.now()
#计算起止日期之间有多少个月(月份的差值)
month_num=12*(end.year-start.year)+end.month-start.month
#这个空列表用于存储我们最终得出的所有的年月
time_list=[]
#年份的起点是注册日期的年份
year=start.year
#月份的起点是注册日期的月份
month=start.month
#遍历月份数+1,之所以加1是因为即使是本月注册的博主,月份差为0,他的页面也要显示一个月,即本月
for m in range(month_num+1):
    #把年月的小列表追加进大列表
    time_list.append([year,month])
    #月份加1
    month+=1
    #当月份达到13的时候,需要再从1月开始数,而且这代表跨年了,所以年份加1
    if month==13:
        month=1
        year+=1
#我希望最终的结果是当前月份在最前面,离我越远的月份越靠后,所以这里要反转列表
time_list.reverse()
print(time_list)

终端:[[2019, 7], [2019, 6], [2019, 5], [2019, 4], [2019, 3], [2019, 2], [2019, 1], [2018,
12], [2018, 11], [2018, 10]] 

 

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值