1

私は次の5平日を取得しようとしていますが、行き詰まっています。

私はこのように始めました:

        List<DateTime> allWeekEndsInOneYear = new List<DateTime>();

        DateTime sDate = DateTime.Now;
        DateTime eDate = DateTime.Now.AddYears(1);

        TimeSpan diff = eDate - sDate;
        int days = diff.Days;
        for (var i = 0; i <= days; i++)
        {
            var testDate = sDate.AddDays(i);
            switch (testDate.DayOfWeek)
            {
                case DayOfWeek.Saturday:
                case DayOfWeek.Sunday:
                    allWeekEndsInOneYear.Add(testDate);
                    break;
            }
        }

        List<DateTime> daysToMark = new List<DateTime>();

        DateTime startDate = DateTime.Now;
        DateTime endDate = DateTime.Now.AddDays(5);

次に、daysToMarkに、週単位(allWeekEndsInOneYearのもの)を除く次の5日を入力する必要があります。どんな助けでも大歓迎です。

4

2 に答える 2

3

スイッチのデフォルトのケースでは、他の日 (週末ではない) を追加できます。

for (var i = 0; i <= days; i++)
{
    var testDate = sDate.AddDays(i);
    switch (testDate.DayOfWeek)
    {
        case DayOfWeek.Saturday:
        case DayOfWeek.Sunday:
            allWeekEndsInOneYear.Add(testDate);
            break;
        default:
            daysToMark.Add(testDate); // this is a workday
            break;
    } 
}

forまた、日数を計算してループを使用する必要はありません。while(testDate <= eDate)仕事をします:

var testDate = DateTime.Now;

while (testDate <= eDate)
{
    switch (testDate.DayOfWeek)
    {
       case DayOfWeek.Saturday:
       case DayOfWeek.Sunday:
            allWeekEndsInOneYear.Add(testDate);
            break;
       default:
            daysToMark.Add(testDate); // this is a workday
            break;
    }

    testDate = testDate.AddDays(1);
}
于 2012-11-13T21:16:57.193 に答える
2

これにより、土曜日または日曜日ではない次の 5 日間が得られます。

var nextFiveWeekDays = new List<DateTime>();
var testDate = DateTime.Now.Date;

while (nextFiveWeekDays.Count()<5)
{
  if (testDate.DayOfWeek != DayOfWeek.Saturday && 
           testDate.DayOfWeek != DayOfWeek.Sunday)
     nextFiveWeekDays.Add(testDate);

testDate = testDate.AddDays(1);
}
于 2012-11-13T21:25:14.727 に答える