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

如何获取两个指定日期之间的季度编号列表?

解决两个日期之间的季度编号列表问题

嘿,我来帮你搞定这个需求!你已经能把单个日期转换成对应的季度编号了,那生成两个日期之间的连续季度列表其实很容易实现,我给你拆解一下思路,再附上代码示例:

核心思路

  1. 先把两个起始/结束日期转换成「年份-季度」的二元组(比如2017年7月就是(2017, 3),2018年4月就是(2018, 2))
  2. 从起始季度开始,逐个往后遍历季度,每到第4季度之后就回到第1季度,同时年份加1
  3. 把遍历过程中的每个季度编号收集起来,直到到达结束季度为止

代码实现(Python示例)

首先,先实现单个日期转「年份-季度」的函数:

from datetime import datetime

def date_to_quarter(date):
    # 传入datetime对象,返回(year, quarter)
    quarter = (date.month - 1) // 3 + 1
    return (date.year, quarter)

然后是生成季度列表的核心函数:

def get_quarters_between(start_date, end_date):
    start_year, start_q = date_to_quarter(start_date)
    end_year, end_q = date_to_quarter(end_date)
    
    quarter_list = []
    current_year, current_q = start_year, start_q
    
    while True:
        # 将当前季度加入列表
        quarter_list.append(current_q)
        
        # 检查是否已经到达结束季度,是则退出循环
        if current_year == end_year and current_q == end_q:
            break
        
        # 切换到下一个季度
        current_q += 1
        if current_q > 4:
            current_q = 1
            current_year += 1
    
    return quarter_list

测试示例

用你提到的日期来测试:

start_date = datetime(2017, 7, 1)
end_date = datetime(2018, 4, 1)
print(get_quarters_between(start_date, end_date))  # 输出: [3, 4, 1]

另外测试同一年的情况,比如2018年2月到2018年5月:

start_date = datetime(2018, 2, 1)
end_date = datetime(2018, 5, 1)
print(get_quarters_between(start_date, end_date))  # 输出: [1, 2]

这个逻辑能覆盖所有跨年度和同年度的情况,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:56:29