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

如何用Python根据2024年周列表提取对应日期(周起始为周二)

自定义周二周起始的2024年周日期提取实现

核心思路

已知2024年1月2日是第一个有效数据的周二(对应wk=2),后续每周以周二为起始,间隔7天。我们可以基于这个基准日期,通过日期偏移计算每个周数对应的起始日期和日期范围。

代码实现(Python)

import datetime

def format_date(date_obj, full_format=True):
    """格式化日期,处理前导零,支持完整格式和短格式"""
    if full_format:
        formatted = date_obj.strftime('%b %d, %Y')
    else:
        formatted = date_obj.strftime('%b %d')
    # 去除日期的前导零(如"Jan 02"改为"Jan 2")
    return formatted.replace(' 0', ' ')

# 基础参数
base_start = datetime.date(2024, 1, 2)  # 第一个有效周的起始周二
wks = list(range(2, 19))  # 输入的周列表:2到18

# 生成每周起始日期列表 wk_starting
wk_starting = [format_date(base_start + datetime.timedelta(weeks=(wk - 2))) for wk in wks]

# 生成每周日期范围列表 wk_composed_of
wk_composed_of = []
for wk in wks:
    current_start = base_start + datetime.timedelta(weeks=(wk - 2))
    current_end = current_start + datetime.timedelta(days=6)  # 一周7天:周二到下周一
    
    start_short = format_date(current_start, full_format=False)
    end_short = format_date(current_end, full_format=False)
    
    # 处理同月份省略重复月份的情况
    if current_start.month == current_end.month:
        # 拆分出月份和日期,只保留一次月份
        month_part, start_day = start_short.split(' ')
        range_str = f"{month_part} {start_day} - {end_short.split(' ')[1]}"
    else:
        range_str = f"{start_short} - {end_short}"
    
    wk_composed_of.append(range_str)

# 输出示例
print("wk_starting:", wk_starting[:3])
print("wk_composed_of:", wk_composed_of[:3])

代码说明

  1. 日期格式化函数:统一处理日期的前导零问题,同时支持完整日期格式(如Jan 2, 2024)和短格式(如Jan 2)。
  2. 基准日期偏移:每个周数wk对应的起始日期 = 基准日期 + (wk-2)*7天,因为wk=2对应基准日期本身。
  3. 日期范围生成:每周结束日期为起始日期加6天(覆盖周二到下周一共7天),并根据是否跨月决定是否重复显示月份,匹配需求中的格式(如Jan 2 - 8、Jan 29 - Feb 4)。

输出示例

运行代码后,前3组结果如下:

wk_starting: ['Jan 2, 2024', 'Jan 9, 2024', 'Jan 16, 2024']
wk_composed_of: ['Jan 2 - 8', 'Jan 9 - 15', 'Jan 16 - 22']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:11:00