如何计算python中前几个月的第一个日期和最后一个日期的日期范围

How to calculate the date range of first date and last date of the previous months in python

我正在尝试使用 python 查找前五个月的第一个和最后一个日期。

today = datetime.today()
 first = today.replace(day=1)
 lastMonth = first - timedelta(days=153)

现在如何找到 python 中前五个月中每个月的第一个和最后一个日期?

谁能帮我解决这个问题?

以下内容基于 SO 上已有的两个答案。它增加了在一个日期范围内用第一天和最后一天进行响应的能力。

Get year month for last X months

import calendar
import datetime
from dateutil.relativedelta import relativedelta


def get_last_months(start_date, months):
    for i in range(months):
        _, num_days = calendar.monthrange(start_date.year,start_date.month)

        first_day = datetime.date(start_date.year, start_date.month, 1).strftime('%Y-%m-%d')
        last_day = datetime.date(start_date.year, start_date.month, num_days).strftime('%Y-%m-%d')
        
        yield (first_day, last_day)
        start_date += relativedelta(months = -1)


months_back = 5

print([i for i in get_last_months(datetime.datetime.today(), months_back)])

输出:

[('2020-10-01', '2020-10-31'), ('2020-09-01', '2020-09-30'), ('2020-08-01', '2020-08-31'), ('2020-07-01', '2020-07-31'), ('2020-06-01', '2020-06-30')]