【问题标题】:How can I get specific date in a year?如何获得一年中的特定日期?
【发布时间】:2013-01-09 03:57:37
【问题描述】:

我想做一个课程安排程序。例如,所有星期五的课程都相同,应该在调度程序上显示。我怎样才能得到一年中所有星期五的日期? 我有一些数据字段;

-Dayofweek  int
-Starthour  int
-finishhour int

【问题讨论】:

    标签: c# asp.net datetime


    【解决方案1】:

    就这样,注意365可能是366,你可以判断一下..

     DateTime dt=DateTime.Parse(DateTime.Now.ToString("yyyy-01-01"));
       for (int i = 0; i < 365;i++ )
       {
           if (dt.AddDays(i).DayOfWeek==DayOfWeek.Friday)
           {
               Console.WriteLine(dt.AddDays(i).ToShortDateString());
           }
    
       }
    

    【讨论】:

    • 当然,找到一年中的第一个星期五,然后i += 7,效率更高。
    【解决方案2】:
    static IEnumerable<DateTime> GetAllDaysInYearByDayOfWeek(int year, DayOfWeek dayOfWeek)
    {
        var startOfYear = new DateTime(year, 1, 1);
        var firstMatchingDate = startOfYear.AddDays((dayOfWeek - startOfYear.DayOfWeek + 7) % 7);
        for (var dt = firstMatchingDate; dt.Year == year; dt = dt.AddDays(7))
            yield return dt;
    }
    

    例如:

    var fridays = GetAllDaysInYearByDayOfWeek(2013, DayOfWeek.Friday);
    foreach (DateTime day in fridays)
        Console.WriteLine(day.ToShortDateString());
    

    结果:

    01/04/2013
    01/11/2013
    01/18/2013
    ...
    12/13/2013
    12/20/2013
    12/27/2013
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多