Ответ 1
Вы можете рассчитать endDate
следующим образом:
DateTime endDate = startDate.AddMonths(1).AddDays(-1);
Как получить дату начала и дату окончания месяца в разных переменных. Я пробовал это, и я получаю дату начала, но не могу найти дату окончания.
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. Ваша помощь, безусловно, будет описана.
Вы можете рассчитать endDate
следующим образом:
DateTime endDate = startDate.AddMonths(1).AddDays(-1);
Чтобы получить первую дату
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);
}
DateTime endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)
.AddMonths(1).AddDays(-1);
У вас уже была дата начала:
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);
Для первой даты:
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));