Google is your friend.
Months:
public DateTime FirstDayOfMonthFromDateTime(DateTime dateTime) { return new DateTime(dateTime.Year, dateTime.Month, 1); } public DateTime LastDayOfMonthFromDateTime(DateTime dateTime) { DateTime firstDayOfTheMonth = new DateTime(dateTime.Year, dateTime.Month, 1); return firstDayOfTheMonth.AddMonths(1).AddDays(-1); }
You can do something like this for years:
DateTime time = new DateTime(2011,1,1); time.AddYears(1).AddDays(-1);
And week you need to use CultureInfo.FirstDay (or what you want to set as the first day of the week, in some countries on Monday, sometimes Sunday).
/// <summary> /// Returns the first day of the week that the specified /// date is in using the current culture. /// </summary> public static DateTime GetFirstDayOfWeek(DateTime dayInWeek) { CultureInfo defaultCultureInfo = CultureInfo.CurrentCulture; return GetFirstDateOfWeek(dayInWeek, defaultCultureInfo); } /// <summary> /// Returns the first day of the week that the specified date /// is in. /// </summary> public static DateTime GetFirstDayOfWeek(DateTime dayInWeek, CultureInfo cultureInfo) { DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek; DateTime firstDayInWeek = dayInWeek.Date; while (firstDayInWeek.DayOfWeek != firstDay) firstDayInWeek = firstDayInWeek.AddDays(-1); return firstDayInWeek; }
Carra source share