Question

Last day of the month in .NET

Normally I use the below code, but is there a better way?

lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
 45  18156  45
1 Jan 1970

Solution

 82

I use

DateTime now = DateTime.Today;
var lastDate = new DateTime(now.Year, now.Month, DateTime.DaysInMonth(now.Year, now.Month));
2010-03-09

Solution

 14

I would probably use DaysInMonth as it makes the code a bit more readable and easier to understand (although, I really like your trick :-)). This requieres a similar ammount of typing (which is quite a lot), so I would probably define an extension method:

DateTime LastDayOfMonth(this DateTime) {
  var days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
  return new DateTime(DateTime.Now.Year, DateTime.Now.Month, days);
}

Now we can use DateTime.Now.LastDayOfMonth() which looks a lot better :-).

2010-03-09