2016-03-12 2 views
0

Как найти даты в C#, если указан год, месяц И день.Поиск даты для данного года, месяца и дня в C#

например. Данный месяц = ​​03, год = 2016. Мне нужно найти даты, в которые происходит суббота.

Ожидаемый выход [мы можем видеть, что в субботу 2016/03 происходит в следующие сроки]:
05/03/2016
12/03/2016
19/03/2016
26/03/2016

+2

Вы должны сначала начать работать над этим. –

+0

[This] (http://stackoverflow.com/questions/248273/count-number-of-mondays-in-a-given-date-range) должен помочь. – AliK

+0

@AliK: Спасибо, это помогло. – LittleThunder

ответ

3
List<DateTime> saturdays = new List<DateTime>(); 
     for(int i=0;i<DateTime.DaysInMonth(year, month), i++) 
     { 
      DateTime dt = new DateTime(year, month, i); 
      if (dt.DayOfWeek == DayOfWeek.Saturday) 
       saturdays.Add(dt); 
     } 
0

Вы можете создать DateTime на основе года и месяца переменных, как первый день этого месяца, перебирать в первый день следующего месяца и проверить его DayOfWeek property является Saturday или нет. Подобно;

var month = 3; 
var year = 2016; 

var start = new DateTime(year, month, 1); 
var end = start.AddMonths(1); 

while (start < end) 
{ 
    if (start.DayOfWeek == DayOfWeek.Saturday) 
    { 
     Console.WriteLine(start.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 
    } 
    start = start.AddDays(1); 
} 

Печать

05/03/2016 
12/03/2016 
19/03/2016 
26/03/2016 
1
int year = 2016, month = 3; 
DayOfWeek dayOfWeek = DayOfWeek.Saturday; 
var dates = 
    // generate dates for all days in the month 
    Enumerable.Range(1, DateTime.DaysInMonth(year, month)) 
    .Select(x => new DateTime(year, month, x)) 
    // select only those of particular dayOfWeek 
    .Where(d => d.DayOfWeek == dayOfWeek) 
    .ToList(); 
1

С Linq, не делая никаких предположений о количестве дней в месяце:

static IEnumerable<DateTime> GetSaturdaysInMonth(int year, int month) 
    { 
     return Enumerable.Range(1, DateTime.DaysInMonth(year, month)) 
      .Select(day => new DateTime(year, month, day)) 
      .Where(dt => dt.DayOfWeek == DayOfWeek.Saturday); 
    } 
0

Это одна (очень простая) возможность:

var startDate = new DateTime(2016, 3, 1); 
var list = new List<DateTime>(); 
for(int i = 0; i < DateTime.DaysInMonth(2016, 3); i++) { 
    var date = startDate.AddDays(i); 
    if (date.DayOfWeek == DayOfWeek.Saturday) list.Add(date); 
} 

Вы создаете startDate с первым днем ​​месяца.
Затем вы повторяете все дни месяца и добавляете субботу в список.

Смежные вопросы