【发布时间】:2015-03-03 03:34:42
【问题描述】:
假设我有最近的 DateTime 和所有可能日期的列表。我将如何有效地在列表中找到最接近去年日期的日期时间?
假设我的清单包含以下内容:
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 函数来检查),我将不胜感激。
【问题讨论】:
-
“去年的日期”到底是什么意思?如果您能提供一个简短但完整的示例,将会有所帮助。
-
我的意思是我提供的日期时间,但一年前。我用一个例子更新了这个问题。
-
列表是否已经排序?您可以从最近的条目中返回 52 个条目。
-
@mikez 列表
与时间段不一致,可以是周、月、季度、年等。