利用python计算每个月有多少天和在两个日期中按月遍历

from datetime import date
y1, m1 = stlmt_date[0].year, stlmt_date[0].month
y2, m2 = stlmt_date[1].year, stlmt_date[1].month
if y1 < y2:
    raise Exception('起止年月有问题,{} to {}'.format(stlmt_date[0], stlmt_date[1]))

import calendar
from datetime import datetime, timedelta

def days_in_month(dt):
    '''获取某个月有多少天
    '''
    return calendar.monthrange(dt.year, dt.month)[1]

def monthly_range(dt_start, dt_end):
    forward = dt_end >= dt_start
    finish = False
    dt = dt_start

    while not finish:        
        yield dt
        if forward:
            days = days_in_month(dt)
            dt = dt + timedelta(days=days)            
            finish = dt > dt_end
        else:
            _tmp_dt = dt.replace(day=1) - timedelta(days=1)
            dt = (_tmp_dt.replace(day=dt.day))
            finish = dt < dt_end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值