gpt4 book ai didi

c# - 如何选择每周的最新日期时间? C#

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:43 26 4
gpt4 key购买 nike

我必须实现一种算法,该算法接收 DateTime 列表并恢复每周的最新 DateTime。

例子:

29/06/2016 -> Lastest date of the last week of the month
27/06/2016
24/06/2016 -> Lastest date of the before last week of the month
22/06/2016
21/06/2016
15/06/2016 -> Lastest of the third week
13/06/2016
...

预期结果

29/06/2016
24/06/2016
15/06/2016

我不问代码是谁做的,而是一些指示或指示来解决这个问题。

最佳答案

注意:此答案假定您对“自然”周感兴趣,而这些周并不真正关心年份。例如,2015 年 12 月 31 日是星期四,2016 年 1 月 1 日是星期五 - 在我看来(并使用此答案中的算法)这些将算作在同一周内......之前/两天的星期一是毕竟是一样的。

对此最简单的解决方案可能是按“一周开始”进行分组,然后取每组中的最新值。查找一周的开始有点尴尬,最好用辅助方法完成:

var latestPerWeek = dates.GroupBy(StartOfWeek)
.Select(g => g.Max())
.ToList();

...

private static DateTime StartOfWeek(DateTime date)
{
date = date.Date; // Just remove any time parts...
// 0=Sunday, 1=Monday... 6=Saturday
int sundayToSaturdayDayOfWeek = (int) date.DayOfWeek;
// 0=Monday, 1=Tuesday... 6=Sunday
int mondayToSundayDayOfWeek = ((sundayToSaturdayDayOfWeek - 1) + 7) % 7;
return date.AddDays(-mondayToSundayDayOfWeek);
}

请注意,.NET“一年中的一周”处理很有用,但基本上不能处理这种情况。在 Noda Time 2.0 中,这将简单得多,但目前还不可用...

关于c# - 如何选择每周的最新日期时间? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38140193/

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