-3

int year と int month を指定して、開始日と終了日を含む週のリストが必要です。

例の結果、

第 1 週 = 2012 年 7 月 1 日から 2012 年 7 月 1 日

第 2 週 = 2012 年 7 月 2 日から 2012 年 7 月 8 日

第 3 週 = 2012 年 7 月 9 日から 2012 年 7 月 15 日

第 4 週 = 2012 年 7 月 16 日から 2012 年 7 月 22 日

第 5 週 = 2012 年 7 月 23 日から 2012 年 7 月 29 日

第 6 週 = 2012 年 7 月 30 日から 2012 年 7 月 31 日

4

2 に答える 2

6

このようなものが動作するはずです:

// using System.Globalization;
var calendar = CultureInfo.CurrentCulture.Calendar;
var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
var weekPeriods =
Enumerable.Range(1, calendar.GetDaysInMonth(year, month))
          .Select(d =>
          {
              var date = new DateTime(year, month, d);
              var weekNumInYear = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, firstDayOfWeek);
              return new { date, weekNumInYear };
          })
          .GroupBy(x => x.weekNumInYear)
          .Select(x => new { DateFrom = x.First().date, To = x.Last().date })
          .ToList();

もちろん、 を変更できますCulture(ここでは を使用しましたCurrentCulture)。

于 2012-07-13T07:23:40.747 に答える
2

これをチェックして、必要に応じて編集してください

// Get the weeks in a month

        DateTime date = DateTime.Today;
        // first generate all dates in the month of 'date'
        var dates = Enumerable.Range(1, DateTime.DaysInMonth(date.Year, date.Month)).Select(n => new DateTime(date.Year, date.Month, n));
        // then filter the only the start of weeks
        var weekends = (from d in dates
                       where d.DayOfWeek == DayOfWeek.Monday
                       select d).ToList();
        foreach (var d in weekends)
        {
            Console.WriteLine(d);
        }
        Console.Write(weekends);
        Console.ReadLine();

それがあなたを助けることを願っています。

ここで他のものを見ることもできますHERE

于 2012-07-13T06:58:43.500 に答える