gpt4 book ai didi

c# - 多年期间按周对日期进行分组

转载 作者:行者123 更新时间:2023-11-30 15:56:24 30 4
gpt4 key购买 nike

我有一个 DateTime 值列表,我想将整个列表拆分为每周的子列表。

日期可能跨越多年(用户选择开始和结束日期),因此按日历周数拆分它们的解决方案最终会发生冲突。

有没有办法遍历列表,然后将每周的 DateTime 值存储在一个新的二维列表中?

可用的值是从星期一到星期五,第一周和最后一周的值可能较少。

我发现的唯一相关问题是 How to group dates by weeks但它不适合我的情况。

最佳答案

您可以使用 this method获取给定 DateTime 的周数.然后你可以使用Enumerable.GroupBy使用包含年份和周数的匿名类型:

var yearWeekGroups = allDates.GroupBy(d => new { d.Year, WeekNum = GetIso8601WeekOfYear(d) });

如果你想要一个List<List<DateTime>>其中每个子列表包含一周的日期:

List<List<DateTime>> allWeeks = yearWeekGroups.Select(g => g.ToList()).ToList();

如果您所在的国家/地区不使用 ISO 8601,您可以使用 Calendar.GetWeekOfYear :

var cc = CultureInfo.CurrentCulture;
var yearWeekGroups = allDates.GroupBy(d => new
{
d.Year,
WeekNum = currentCulture.Calendar.GetWeekOfYear(d, cc.DateTimeFormat.CalendarWeekRule, cc.DateTimeFormat.FirstDayOfWeek)
});

关于c# - 多年期间按周对日期进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953512/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com