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

如何按一年三划分周期(一年分为3段)获取起始日期

如何根据日期获取其所属一年三划分周期的起始日期(当月1日)

问题描述

给定任意格式为dd-mmm-yyyy(如1-april-2023)的日期,需要返回该日期所属的一年三划分周期的起始日期(格式同样为dd-mmm-yyyy,且为当月1日)。已知示例:

  • 输入1-april-2023 → 返回1-jan-2023
  • 输入1-june-2023 → 返回1-may-2023

周期划分规则

从示例推导,三个周期的划分如下:

  • 1月~4月:起始日期为1月1日
  • 5月~8月:起始日期为5月1日
  • 9月~12月:起始日期为9月1日

Python 实现方案

用datetime模块处理日期解析与格式化,核心逻辑是根据月份判断所属周期:

from datetime import datetime

def get_cycle_start_date(input_date):
    # 解析输入的日期字符串(支持完整英文月份名)
    parsed_date = datetime.strptime(input_date, '%d-%B-%Y')
    year = parsed_date.year
    
    # 判断月份所属周期,确定起始月份
    if 1 <= parsed_date.month <= 4:
        start_month = 1
    elif 5 <= parsed_date.month <= 8:
        start_month = 5
    else:
        start_month = 9
    
    # 生成并格式化起始日期(输出英文月份缩写)
    start_date = datetime(year, start_month, 1)
    return start_date.strftime('%d-%b-%Y').lower()

# 测试示例
print(get_cycle_start_date('1-april-2023'))   # 输出: 1-jan-2023
print(get_cycle_start_date('1-june-2023'))    # 输出: 1-may-2023
print(get_cycle_start_date('1-november-2023'))# 输出: 1-sep-2023

代码说明

  1. 日期解析:使用%d-%B-%Y格式符解析输入的完整月份名日期字符串,%B对应英文完整月份名(如april)。
  2. 周期判断:根据月份所在区间,匹配对应的周期起始月份。
  3. 格式输出:生成起始日期的datetime对象后,用%d-%b-%Y格式输出(%b对应英文月份缩写),并转为小写以匹配示例格式。

如果使用其他编程语言,核心逻辑一致:解析日期→判断月份所属区间→生成对应周期的当月1日并格式化输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:04