Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

date

c#

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)
);
like image 629
Steve Wood Avatar asked Mar 02 '11 17:03

Steve Wood


4 Answers

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.

like image 73
Jon Skeet Avatar answered Nov 11 '22 23:11

Jon Skeet


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

Edit: sorry, typo :)

like image 22
TDaver Avatar answered Nov 11 '22 21:11

TDaver


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

if Today is monday, 
and Today's Date is 7 or less.
like image 8
corsiKa Avatar answered Nov 11 '22 23:11

corsiKa


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;
}
like image 3
B. Clay Shannon-B. Crow Raven Avatar answered Nov 11 '22 21:11

B. Clay Shannon-B. Crow Raven