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

如何根据当前日期获取周一至周六的完整工作周(C#实现)

实现根据日期获取周一至周六的工作周

核心逻辑

  • 若输入日期为周日,工作周为下周一至下周六
  • 若输入日期为周一至周六,工作周为当前周的周一至周六

C# 代码实现

using System;

public static class WorkWeekHelper
{
    // 返回工作周的开始(周一)和结束(周六)日期
    public static (DateTime Start, DateTime End) GetWorkWeek(DateTime date)
    {
        DateTime startOfWeek;
        
        if (date.DayOfWeek == DayOfWeek.Sunday)
        {
            // 周日的工作周从下周一启动
            startOfWeek = date.AddDays(1);
        }
        else
        {
            // 计算当前日期到周一的偏移量,如周二减1天、周三减2天
            int daysToSubtract = (int)date.DayOfWeek - (int)DayOfWeek.Monday;
            startOfWeek = date.AddDays(-daysToSubtract);
        }
        
        // 周六为周一往后推5天
        DateTime endOfWeek = startOfWeek.AddDays(5);
        
        // 仅保留日期部分,剔除时分秒干扰
        return (startOfWeek.Date, endOfWeek.Date);
    }

    // 示例调用
    public static void Main()
    {
        // 测试用例1:2022.11.22(周二)
        DateTime testDate1 = new DateTime(2022, 11, 22);
        var week1 = GetWorkWeek(testDate1);
        Console.WriteLine($"{week1.Start:yyyy.MM.dd} - {week1.End:yyyy.MM.dd}");
        // 输出:2022.11.21 - 2022.11.26

        // 测试用例2:2022.11.27(周日)
        DateTime testDate2 = new DateTime(2022, 11, 27);
        var week2 = GetWorkWeek(testDate2);
        Console.WriteLine($"{week2.Start:yyyy.MM.dd} - {week2.End:yyyy.MM.dd}");
        // 输出:2022.11.28 - 2022.12.03
    }
}

代码说明

  • 借助DayOfWeek枚举判断日期所属星期,对周日做特殊处理
  • 通过日期偏移量快速定位周一,再通过固定天数偏移得到周六
  • 调用Date属性剥离时分秒,确保返回结果仅包含年月日信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:25:35