从Datetime.Today减去一个月

时间:2015-01-05 09:53:33

标签: c# .net winforms

我有DateTimePicker我允许用户选择当前年份之前的月份。

问题是,如果日期是1月1日,则无法以我现在的方式计算去年12月的月份。

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;
}

3 个答案:

答案 0 :(得分:73)

通过'添加'-1:

减去一个月
var lastmonth = DateTime.Today.AddMonths(-1);

请参阅DateTime.AddMonths上的MSDN文档。

答案 1 :(得分:3)

帕特里克得到了它。要建立他的答案并改进错误处理(如果qs可能是无效的日期字符串),您可能会执行以下操作:

DateTime qsValue;

dateTimePicker1.MaxDate = DateTime.Today.AddMonths(-1);

dateTimePicker1.Value = (DateTime.TryParse(qs, out qsValue))
    ? qsValue
    : dateTimePicker1.MaxDate;

答案 2 :(得分:0)

如果您像Adil H. Raza一样,不希望代码中使用负数,则还可以使用扩展方法:

public static DateTime SubtractMonths(this DateTime dt, int months) => dt.AddMonths(-months);

并像

一样使用它
var lastmonth = DateTime.Today.SubtractMonths(1);