-5

レッスンスケジューラーを作りたいです。たとえば、金曜日のすべてのレッスンは同じであり、スケジューラーに表示されます。1 年間のすべての金曜日の日付を取得するにはどうすればよいですか? このためのデータフィールドがあります。

-Dayofweek  int
-Starthour  int
-finishhour int
4

2 に答える 2

0

このように、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());
       }

   }
于 2013-01-25T08:04:51.433 に答える
0
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
于 2013-11-05T00:45:03.460 に答える