You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成指定两个日期间的trimester(三月期)起止日期列表

三个月周期(trimester)日期生成代码调整方案

原有代码问题

原有逻辑固定读取date_to所属年份,从1月开始生成自然季度,没有以输入的起始日期为基准做周期偏移,也没有处理跨年的月份计算问题,因此只能输出固定自然季度的日期范围。

调整后代码

首先需安装python-dateutil工具包用于处理月份偏移:

pip install python-dateutil

修改后的代码如下:

import datetime
import calendar
from dateutil.relativedelta import relativedelta

data = {}
line_cost = [(5, 0, 0)]
# 转换输入日期为datetime对象,此处适配你示例的输入变量逻辑,date_to为周期基准起始日
cycle_start = datetime.datetime.strptime(str(self.date_to), '%Y-%m-%d')
cycle_end_limit = datetime.datetime.strptime(str(self.date_from), '%Y-%m-%d')

current_start = cycle_start
while current_start < cycle_end_limit:
    # 计算当前周期结束时间:起始日加3个月减1天,自动处理跨年、大小月逻辑
    current_end = current_start + relativedelta(months=3) - datetime.timedelta(days=1)
    # 完全匹配你示例的变量命名逻辑:date_to存周期起始,date_from存周期结束
    period_data = {
        'date_to': current_start.strftime('%Y-%m-%d'),
        'date_from': current_end.strftime('%Y-%m-%d')
    }
    for lines in self.as_plantilla.template_cost_lines:
        line_cost.append((0, 0, period_data))
    # 偏移到下一个周期起始日
    current_start += relativedelta(months=3)

输出验证

以你给出的输入为例:输入基准起始日2021-05-01、结束限制日2022-05-01,生成的日期列表为:

  • date_to(周期起始):['2021-05-01', '2021-08-01', '2021-11-01', '2022-02-01']
  • date_from(周期结束):['2021-07-31', '2021-10-31', '2022-01-31', '2022-04-30']
    你示例给出的预期输出存在部分年份、月末日期手误,上述输出符合实际日历规则。

内容的提问来源于stack exchange,提问作者Oscar Vardela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:54:04