0

「曜日名」を指定して、指定された2つの日付の間のすべての日を取得する方法は?
例:開始日= 2011 年 1 月 1 日 終了日 = 2011 年 120 日
      曜日=日曜日
      

ここでは、曜日名が「SUNDAY」のすべての日付を取得する必要があります。
例:

Jan 02, 2011
Jan 09, 2011
Jan 16, 2011
4

5 に答える 5

12

私はそのようなEnumerable.Rangeタスクに使用するのが好きです:

DateTime start = new DateTime(2011,1,1);
DateTime end = new DateTime(2011,1,20);

var datesThatAreSundays = Enumerable
    .Range(start.DayOfYear, end.Subtract(start).Days + 1)
    .Select(n => start.AddDays(n - start.DayOfYear))
    .Where(d => d.DayOfWeek == DayOfWeek.Sunday);
于 2012-09-14T13:28:54.023 に答える
2
DateTime startDate = new DateTime(2011, 1, 1);
DateTime endDate = new DateTime(2011, 1, 20);

while (startDate < endDate)
{
   if (startDate.DayOfWeek == DayOfWeek.Sunday)
   {
      // Do something
   }

   startDate = startDate.AddDays(1);
}
于 2012-09-14T13:23:34.620 に答える
2

のようなものはどうですか

DateTime startDate = new DateTime(2011, 01, 01);
DateTime endDate = new DateTime(2011, 01, 20);
string dayName = "sunday";

List<DateTime> list = new List<DateTime>();
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1))
{
    if (runDate.DayOfWeek.ToString().ToLower() == dayName)
        list.Add(runDate);
}

またはEnum.TryParseを使用しても

DateTime startDate = new DateTime(2011, 01, 01);
DateTime endDate = new DateTime(2011, 01, 20);
string dayName = "sunday";
DayOfWeek dow;
Enum.TryParse(dayName, true, out dow);

List<DateTime> list = new List<DateTime>();
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1))
{
    if (runDate.DayOfWeek == dow)
        list.Add(runDate);
}
于 2012-09-14T13:26:29.517 に答える
0

テストせずに:

DateTime start = x;
DateTime end = y;

while (start.DayOfWeek != z)
    start = start.AddDays(1);

while (start <= end)
{
    //DoStuff

    start = start.AddDays(7);
}
于 2012-09-14T13:26:34.583 に答える
0

あなたはこれを試すことができます

 var firstDate = new DateTime(2011, 1, 1);
 var lastDate = new DateTime(2011, 1, 20);

 var result = (from el in Enumerable.Range(0, (lastDate - firstDate).Days)
                      let date = firstDate.AddDays(el)
                      where date.DayOfWeek == DayOfWeek.Sunday
                      select date).ToArray();
于 2012-09-14T13:33:00.983 に答える