Поиск даты для заданного года, месяца и имени дня в С#

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

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

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


person LittleThunder    schedule 12.03.2016    source источник
comment
Возможно, вам следует начать работать над этим в первую очередь.   -  person Yassin Hajaj    schedule 12.03.2016
comment
Это должно помочь.   -  person AliK    schedule 12.03.2016
comment
@AliK: Спасибо, это помогло.   -  person LittleThunder    schedule 10.05.2016
comment
@YassinHajaj: Я работал над этим с предложением Алика и нашел решение.   -  person LittleThunder    schedule 10.05.2016


Ответы (3)


С 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);
    }
person StuartLC    schedule 12.03.2016

Вы можете создать DateTime на основе переменных года и месяца в качестве первого дня этого месяца, перебрать первый день следующего месяца и проверить его DayOfWeek свойство равно 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
person Soner Gönül    schedule 12.03.2016

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

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 с первым днем ​​месяца.
Затем вы перебираете все дни месяца и добавляете субботы в список.

person Domysee    schedule 12.03.2016