Подтвердить что ты не робот

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

Как я могу проверить, является ли сегодня первый понедельник месяца?

Код ниже дает мне последний день месяца, как мне это изменить?

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(
       today.Year, 
       today.Month, 
       DateTime.DaysInMonth(today.Year, today.Month)
);
4b9b3361

Ответ 1

Как насчет:

DateTime today = DateTime.Today;
if (today.DayOfWeek == DayOfWeek.Monday && today.Day <= 7)

Поиск первого понедельника месяца немного сложнее. Неясно, нужно ли вам это делать - сообщите нам, если вам это нужно.

Обратите внимание на использование DateTime.Today один раз - таким образом вы не получите потенциальных странностей, когда дата изменяется между двумя частями оцениваемого условия.

Ответ 2

bool isItFirstMonday = DateTime.Today.DayOfWeek == DayOfWeek.Monday 
                         && DateTime.Today.Day <= 7

Изменить: извините, опечатка:)

Ответ 3

Я не знаю С#, но на любом языке он

if Today is monday, 
and Today Date is 7 or less.

Ответ 4

Связанный случай, как сказал Джон, немного сложнее. Предполагая, что вы знаете год и месяц:

public static DateTime getFirstMondayOfMonthAndYear(int Month, int Year)
{
    DateTime dt;
    DateTime.TryParse(String.Format("{0}/{1}/1", Year, Month), out dt); 
    for (int i = 0; i < 7; i++)
        {
        if (dt.DayOfWeek == DayOfWeek.Monday)
        {
            return dt;
        }
        else
        {
            dt = dt.AddDays(1);
        }
        }
    // If get to here, punt
    return DateTime.Now;
}

Ответ 5

Вы можете сделать следующее

DateTime dt = ...;
if (dt.DayOfWeek == DayOfWeek.Monday && dt.Day <= 7) {
  // First Monday of the month
}