输入yyyymmdd格式日期,生成含当月及前两月日期列表的技术问询
解决方案(Python实现)
针对你需要生成指定日期及前两个月对应日期列表,并存储到变量循环执行操作的需求,我整理了一个实用的实现方式:
步骤说明
- 借助
datetime和python-dateutil库处理日期运算(python-dateutil能自动处理跨年月的边界情况,比如1月减1月会自动转到去年12月) - 将输入的
yyyymmdd格式字符串解析为日期对象 - 生成当前日期、前1个月、前2个月的日期,再转换回
yyyymmdd格式存入列表 - 直接遍历这个列表,即可循环执行你的
xyz操作
完整代码示例
from datetime import datetime from dateutil.relativedelta import relativedelta def get_three_months_dates(input_date_str): # 解析输入的日期字符串为datetime对象 current_date = datetime.strptime(input_date_str, "%Y%m%d").date() # 生成前一个月和前两个月的日期 prev_month_date = current_date - relativedelta(months=1) prev_two_month_date = current_date - relativedelta(months=2) # 转换回yyyymmdd格式并存入列表 date_list = [ current_date.strftime("%Y%m%d"), prev_month_date.strftime("%Y%m%d"), prev_two_month_date.strftime("%Y%m%d") ] return date_list # 示例使用 input_date = "20170828" target_dates = get_three_months_dates(input_date) print(target_dates) # 输出: ['20170828', '20170728', '20170628'] # 循环执行xyz操作 for date_str in target_dates: print(f"执行xyz操作,输入日期: {date_str}") # 这里替换成你的xyz操作代码,比如xyz(date_str)
注意事项
- 如果你还没安装
python-dateutil,可以通过pip install python-dateutil命令安装 - 这个方法能完美处理各种边界情况:比如输入
20180105会返回['20180105', '20171205', '20171105'];输入20200331(3月有31天)会自动调整到2月的最后一天20200229(闰年),完全符合实际日期逻辑
内容的提问来源于stack exchange,提问作者Chiranjeev Singh
相关产品推荐
相关产品推荐

