我可以在三个月内使用一种方法,还是应该使用三种不同的方法?这是我的代码:
nav-tabs
答案 0 :(得分:0)
试试这个,然后按照@Jon Skeet的评论进行改进:
public static DateTime ThirdMonday(DateTime thirdMonday, DateTime month) {
var mondayDay = (from day in Enumerable.Range(1, 31)
where new DateTime(thirdMonday.Year, month.Month, day).DayOfWeek == DayOfWeek.Monday
select day).ElementAt(2);
var result = new DateTime(thirdMonday.Year, thirdMonday.Month, mondayDay);
return result;
}
static void Main(string[] args)
{
var result = ThirdMonday(DateTime.Now, new DateTime(2016, 2, 1)); //pass February as the month
Console.WriteLine(result);
Console.Read();
}
答案 1 :(得分:0)
我有时担心我们的未来 - 人们正在寻找各种方法来使用LINQ表达式和其他复杂算法来解决那些可以用简单数学解决的问题。
你当然不需要在每个月的每一天进行交流来弄清楚它!
public DateTime GetOccurrenceInMonth(int year, int month, DayOfWeek dayOfWeek, int occurance)
{
var dtFirst = new DateTime(year, month, 1);
var dowFirstDay = (int)dtFirst.DayOfWeek;
var day = (occurance*7)+1 - ( (dowFirstDay-(int)dayOfWeek+7)%7 );
return new DateTime(year, month, day);
}