我想在C#中找到2月,6月和7月的第三个星期二

时间:2016-07-10 06:38:02

标签: c#

我可以在三个月内使用一种方法,还是应该使用三种不同的方法?这是我的代码:

nav-tabs

2 个答案:

答案 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);
}