Как получить дату начала месяца и дату окончания?

Как получить дату начала и дату окончания месяца в разных переменных. Я пробовал это, и я получаю дату начала, но не могу найти дату окончания.

DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd HH:mm:ss.fff");
DateTime  endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(30).ToString("yyyy-MM-dd HH:mm:ss.fff");

Эта логика терпит неудачу, если дата окончания месяца равна 31 и 28 или 29. Ваша помощь, безусловно, будет описана.

Ответ 1

Вы можете рассчитать endDate следующим образом:

DateTime endDate = startDate.AddMonths(1).AddDays(-1);

Ответ 2

Чтобы получить первую дату

public DateTime FirstDayOfMonth(DateTime dateTime)
{
   return new DateTime(dateTime.Year, dateTime.Month, 1);
}

Получить последнюю дату

public DateTime LastDayOfMonth(DateTime dateTime)
{
   DateTime firstDayOfTheMonth = new DateTime(dateTime.Year, dateTime.Month, 1);
   return firstDayOfTheMonth.AddMonths(1).AddDays(-1);
}

Ответ 3

DateTime endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)
                       .AddMonths(1).AddDays(-1);

Ответ 4

У вас уже была дата начала:

DateTime monthStartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);

Есть способ получить количество дней в месяц (и, глядя на код IL, кажется, что этот способ более эффективен, чем другие ответы, хотя, если вы не собираетесь делать это в миллиард раз, я сомневаюсь, что будет какая-то разница):

int daysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
DateTime monthEndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, daysInMonth);

Ответ 5

Для первой даты:

DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);

Для последней даты:

DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));