【发布时间】:2010-04-26 05:56:23
【问题描述】:
我有一个函数只返回一系列日期中的星期五
public static List<DateTime> GetDates(DateTime startDate, int weeks)
{
int days = weeks * 7;
//Get the whole date range
List<DateTime> dtFulldateRange = Enumerable.Range(-days, days).Select(i => startDate.AddDays(i)).ToList();
//Get only the fridays from the date range
List<DateTime> dtOnlyFridays = (from dtFridays in dtFulldateRange
where dtFridays.DayOfWeek == DayOfWeek.Friday
select dtFridays).ToList();
return dtOnlyFridays;
}
函数的目的: "从指定的周数到 StartDate 的日期列表,即如果 startdate 是 2010 年 4 月 23 日并且周数是 1,那么程序应该返回从2010 年 4 月 16 日至开始日期”。
我将函数调用为:
DateTime StartDate1 = DateTime.ParseExact("20100430", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
List<DateTime> dtList = Utility.GetDates(StartDate1, 4).ToList();
现在要求发生了一些变化。我只需要找出每个月的最后一个星期五。 函数的输入将保持不变。
【问题讨论】:
-
@Newbie:C# 的版本很重要,.NET 的版本也很重要,因为 C# 本身不能帮助你——你需要 .NET Framework。
-
更惯用的实现是使用
IEnumerable<DateTime>,而不是将所有内容都转换为List<DateTime>。