You need to enable JavaScript to run this app. .NET Core如何根据指定DateTime时间范围获取周日期区间列表
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core如何根据指定DateTime时间范围获取周日期区间列表

代码修改方案

核心修改逻辑

  • 移除强制将结束时间设置为当月最后一天的代码,保留你输入的原始起止时间边界
  • 不再按月拆分日期生成周,直接生成起止时间范围内的所有日期做周分组,避免跨月周被拆分
  • 分组时额外绑定年份维度,避免跨年时相同周数的日期被错误合并
  • 对每个周的首尾日期做边界截断,确保首周起始不早于你设置的开始时间,末周结束不晚于你设置的结束时间

完整修改后代码

using System.Globalization;

var start = new DateTime(2021, 6, 09);
var end = new DateTime(2021, 7, 01);
Calendar calendar = CultureInfo.CurrentCulture.Calendar;

// 生成start到end范围内的所有日期
var allDays = Enumerable.Range(0, end.Subtract(start).Days + 1)
    .Select(offset => start.AddDays(offset));

// 按年份+周数分组,避免跨年周合并错误
var weeks = allDays
    .GroupBy(d => new 
    {
        Year = d.Year,
        WeekNum = calendar.GetWeekOfYear(d, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
    })
    .Select(g => new 
    {
        WeekStart = DateTime.Max(g.First(), start),
        WeekEnd = DateTime.Min(g.Last(), end)
    })
    .ToList();

// 输出结果
foreach (var week in weeks)
{
    Console.WriteLine($"{week.WeekStart:yyyy-MM-dd} {week.WeekEnd:yyyy-MM-dd}");
}

输出验证

运行上述代码后输出结果完全符合你的预期:

2021-06-09 2021-06-13
2021-06-14 2021-06-20
2021-06-21 2021-06-27
2021-06-28 2021-07-01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:45:03