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

如何在Python循环中为对应作业日期变量增加1天?

问题描述

现有以下日期变量:

job1_started = '2020-01-01' 
job1_end  = '2021-01-01' 
job2_started = '2022-01-01' 
job2_end = '2023-01-01' 
...
jobn_started = '2023-01-01' 
jobn_end = '2023-01-01'

以及输入列表:

lst=['job1','job2',...... 'jobn']

需要遍历该列表中的所有值,为每个作业对应的_started和_end日期变量增加1天,循环框架如下:

for date in lst:
    < logic needed>

预期输出(日期加1天):

job1_started = '2020-01-02'
job1_end  = '2021-01-02'
job2_started = '2022-01-02'
job2_end = '2023-01-02'
...
jobn_started = '2023-01-02'
jobn_end = '2023-01-02'

请问该如何实现?

实现方案

1. 准备日期处理工具

用Python的datetime模块处理日期加减,先导入相关类:

from datetime import datetime, timedelta

2. 定义日期加1天的通用函数

把字符串格式的日期转成可计算的datetime对象,加1天后再转回字符串:

def add_one_day(date_str):
    date_obj = datetime.strptime(date_str, '%Y-%m-%d')
    new_date_obj = date_obj + timedelta(days=1)
    return new_date_obj.strftime('%Y-%m-%d')

方式一:直接修改全局变量(适合简单场景)

如果作业日期是全局变量,可以通过globals()字典动态访问和修改:

from datetime import datetime, timedelta

def add_one_day(date_str):
    date_obj = datetime.strptime(date_str, '%Y-%m-%d')
    return (date_obj + timedelta(days=1)).strftime('%Y-%m-%d')

# 初始化作业日期变量
job1_started = '2020-01-01' 
job1_end  = '2021-01-01' 
job2_started = '2022-01-01' 
job2_end = '2023-01-01'

lst=['job1','job2']

for job in lst:
    # 修改_started变量
    started_key = f"{job}_started"
    globals()[started_key] = add_one_day(globals()[started_key])
    # 修改_end变量
    end_key = f"{job}_end"
    globals()[end_key] = add_one_day(globals()[end_key])

# 验证结果
print(job1_started)  # 输出 '2020-01-02'
print(job1_end)      # 输出 '2021-01-02'

方式二:用字典统一管理(更规范的做法)

不建议用大量零散变量,用字典集中管理所有作业日期,维护更方便:

from datetime import datetime, timedelta

def add_one_day(date_str):
    date_obj = datetime.strptime(date_str, '%Y-%m-%d')
    return (date_obj + timedelta(days=1)).strftime('%Y-%m-%d')

# 用字典存储所有作业日期
jobs_dates = {
    'job1': {'started': '2020-01-01', 'end': '2021-01-01'},
    'job2': {'started': '2022-01-01', 'end': '2023-01-01'},
    # 可继续添加更多作业
}

lst=['job1','job2']

for job in lst:
    jobs_dates[job]['started'] = add_one_day(jobs_dates[job]['started'])
    jobs_dates[job]['end'] = add_one_day(jobs_dates[job]['end'])

# 验证结果
print(jobs_dates['job1']['started'])  # 输出 '2020-01-02'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:01:39