Steve Wood
Steve Wood

Reputation: 685

C# How can I check if today is the first Monday of the month?

How can I check if today is the first Monday of the month?

The code below gives me the last day of the month, how should I modify this?

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

Upvotes: 28

Views: 41828

Answers (5)

A related case is, as Jon said, slightly trickier. Presuming you know the year and month:

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;
}

Upvotes: 5

JaredPar
JaredPar

Reputation: 754565

You could do the following

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

Upvotes: 2

corsiKa
corsiKa

Reputation: 82559

I don't know c#, but in any language, it's

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

Upvotes: 8

Jon Skeet
Jon Skeet

Reputation: 1499890

How about:

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

Finding the first Monday of the month is slightly trickier. It's not clear whether or not you need that - let us know if you need that.

Note the use of DateTime.Today once - that way you don't end up with potential oddities where the date changes between the two parts of the condition being evaluated.

Upvotes: 54

TDaver
TDaver

Reputation: 7264

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

Edit: sorry, typo :)

Upvotes: 22

Related Questions