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

获取两周后周的起止日期(周日起周六止)技术实现问询

解决方案

核心思路是绕过年周数的计算逻辑,直接通过日期偏移实现,完全规避跨年问题:

  1. 先定位当前日期所在周的起始日(周日):无论当天是周几,通过天数偏移回到本周的周日。
  2. 给这个起始日加14天,得到两周后周的起始日(周日)。
  3. 给目标起始日加6天,得到该周的结束日(周六)。

Python 实现示例

from datetime import datetime, timedelta

def get_two_weeks_later_week_range(current_date=None):
    if current_date is None:
        current_date = datetime.today().date()
    # 计算当前周的起始日(周日):datetime.weekday() 周一为0,周日为6
    days_to_sunday = (current_date.weekday() + 1) % 7
    current_week_start = current_date - timedelta(days=days_to_sunday)
    # 计算两周后的周起止日期
    target_week_start = current_week_start + timedelta(days=14)
    target_week_end = target_week_start + timedelta(days=6)
    return target_week_start, target_week_end

# 测试:输入2022/12/13
test_date = datetime(2022, 12, 13).date()
start, end = get_two_weeks_later_week_range(test_date)
print(f"@Start: {start.strftime('%Y/%m/%d')}, @End: {end.strftime('%Y/%m/%d')}")
# 输出:@Start: 2022/12/25, @End: 2022/12/31

JavaScript 实现示例

function getTwoWeeksLaterWeekRange(currentDate = new Date()) {
    const date = new Date(currentDate);
    // 计算当前周的起始日(周日):getDay() 周日为0,周六为6
    const daysToSunday = date.getDay();
    date.setDate(date.getDate() - daysToSunday);
    // 计算两周后的周起止日期
    const targetWeekStart = new Date(date);
    targetWeekStart.setDate(targetWeekStart.getDate() + 14);
    const targetWeekEnd = new Date(targetWeekStart);
    targetWeekEnd.setDate(targetWeekEnd.getDate() + 6);
    
    // 格式化日期为 YYYY/MM/DD
    const format = (d) => {
        const y = d.getFullYear();
        const m = String(d.getMonth() + 1).padStart(2, '0');
        const dStr = String(d.getDate()).padStart(2, '0');
        return `${y}/${m}/${dStr}`;
    };
    
    return { start: format(targetWeekStart), end: format(targetWeekEnd) };
}

// 测试:输入2022/12/13
const testDate = new Date(2022, 11, 13); // JS月份从0开始
const result = getTwoWeeksLaterWeekRange(testDate);
console.log(`@Start: ${result.start}, @End: ${result.end}`);
// 输出:@Start: 2022/12/25, @End: 2022/12/31

为什么年周数方案会失效

跨年时不同系统的年周计算规则不一致(比如ISO周以周一为起始,且要求第1周包含当年第一个周四),直接给年周数加2会出现周数与实际日期不匹配的情况。而基于日期偏移的方案只按实际天数计算,完全不受跨年、周规则差异的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:45:24