Ответ 1
Просто выделите месяц, добавив -1:
var lastmonth = DateTime.Today.AddMonths(-1);
См. Документацию MSDN по DateTime.AddMonths
.
У меня есть DateTimePicker
в котором я разрешаю пользователю выбирать месяц, предшествующий текущему году.
Проблема в том, что если дата 1 января, она не может рассчитать декабрьский месяц прошлого года так, как я это делаю сейчас.
var today = DateTime.Today;
var lastmonth = new DateTime(today.Year, today.Month - 1, 1);
if (qs == "")
{
dateTimePicker1.MaxDate = lastmonth;
dateTimePicker1.Value = lastmonth;
}
else
{
DateTime dt = Convert.ToDateTime(qs);
dateTimePicker1.Value = dt;
dateTimePicker1.MaxDate = lastmonth;
}
Просто выделите месяц, добавив -1:
var lastmonth = DateTime.Today.AddMonths(-1);
См. Документацию MSDN по DateTime.AddMonths
.
Патрик понял это. Чтобы построить его ответ и улучшить обработку ошибок (если есть вероятность того, что qs
может быть недопустимой строкой даты), вы можете сделать что-то вроде:
DateTime qsValue;
dateTimePicker1.MaxDate = DateTime.Today.AddMonths(-1);
dateTimePicker1.Value = (DateTime.TryParse(qs, out qsValue))
? qsValue
: dateTimePicker1.MaxDate;