gpt4 book ai didi

c# - 如何从 List 中获取最接近的 DateTime

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:47 25 4
gpt4 key购买 nike

假设我有最新的 DateTime 和所有可能日期的列表。我将如何有效地在列表中找到最接近去年日期的日期时间?

假设我的 list 包括以下内容:

2014-03-07
2014-03-14
2014-03-21
2014-03-28
...
2015-03-06
2015-03-13
2015-03-20

我最近的日期是 2015-03-20,但我想检索去年的日期,2014-03-21。

这是我目前所拥有的,但如果去年的日期是一天休假(例如,我的时间段每周存储),它将不起作用。
public DateTime LastYearDate()
{
List<DateTime> times = GetAllDates();
times.Sort();
times.Reverse();
DateTime currentDate = times.First();
return times.Where(dt => dt == currentDate.AddYears(-1)).First();
}

我不确定我会用什么来递归计算最接近的日期,所以如果你对我应该采取的方向有任何想法(引用任何 Linq 函数来检查),那将不胜感激。

最佳答案

只需按列表中的日期与您要查找的日期之间的差异排序:

var dateToFind = currentDate.AddYears(-1);
times.OrderBy(t => (t - dateToFind).Duration).FirstOrDefault();

(两个日期之间的差异是 TimeSpan 的一个实例; Duration 属性返回绝对值)

关于c# - 如何从 List<DateTime> 中获取最接近的 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817150/

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