获取指定周的开始时间结束时间

    /// <summary>
    /// 获取周
    /// </summary>
    /// <param name="year"></param>
    /// <returns></returns>
    static int GetWeekNumber(int year)
    {
        DateTime now = Convert.ToDateTime(year + "-12-31");
        var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
        int firstWeek = cal.GetWeekOfYear(now, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        return firstWeek;
    }
    /// <summary>
    /// 周开始时间
    /// </summary>
    /// <param name="year"></param>
    /// <param name="weekNumber"></param>
    /// <returns></returns>
    static DateTime GetFirstDateOfWeek(int year, int weekNumber)
    {
        DateTime jan1 = new DateTime(year, 1, 1);
        int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;

        DateTime firstThursday = jan1.AddDays(daysOffset);
        var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
        int firstWeek = cal.GetWeekOfYear(firstThursday, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

        var weekNum = weekNumber;
        if (firstWeek <= 1)
        {
            weekNum -= 1;
        }

        DateTime result = firstThursday.AddDays(weekNum * 7);
        return result.AddDays(-3);
    }
    /// <summary>
    /// 周结束时间
    /// </summary>
    /// <param name="year"></param>
    /// <param name="weekNumber"></param>
    /// <returns></returns>
    static DateTime GetLastDateOfWeek(int year, int weekNumber)
    {
        DateTime firstDayOfWeek = GetFirstDateOfWeek(year, weekNumber);
        return firstDayOfWeek.AddDays(6);
    }
posted @   煜灵  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示