如何按一年三划分周期(一年分为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
代码说明
- 日期解析:使用
%d-%B-%Y格式符解析输入的完整月份名日期字符串,%B对应英文完整月份名(如april)。 - 周期判断:根据月份所在区间,匹配对应的周期起始月份。
- 格式输出:生成起始日期的
datetime对象后,用%d-%b-%Y格式输出(%b对应英文月份缩写),并转为小写以匹配示例格式。
如果使用其他编程语言,核心逻辑一致:解析日期→判断月份所属区间→生成对应周期的当月1日并格式化输出。
内容的提问来源于stack exchange,提问作者Hussein Chokor
相关产品推荐
相关产品推荐

