vko*_*kou 5 c# datetime date list
我有一个值列表DateTime
,我想将整个列表分成每周的子列表。
这些日期可能跨越多年(用户选择开始日期和结束日期),因此按日历周数将它们分开的解决方案最终会产生冲突。
有没有办法遍历列表,然后将每周的DateTime
值存储在新的二维列表中?
可用值从周一到周五,第一周和上周的值可能较少。
我发现的唯一相关问题是如何按周对日期进行分组,但它不适合我的情况。
您可以使用此方法来获取给定的周数DateTime
。然后您可以使用Enumerable.GroupBy
包含年份和周数的匿名类型:
var yearWeekGroups = allDates.GroupBy(d => new { d.Year, WeekNum = GetIso8601WeekOfYear(d) });
Run Code Online (Sandbox Code Playgroud)
如果您想要List<List<DateTime>>
每个子列表包含一周的日期:
List<List<DateTime>> allWeeks = yearWeekGroups.Select(g => g.ToList()).ToList();
Run Code Online (Sandbox Code Playgroud)
如果您所在的国家/地区不使用 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)
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1156 次 |
最近记录: |