从 Datetime.Today 中减去一个月

本文关键字:一个 Datetime Today | 更新日期: 2023-09-27 18:36:17

>我有一个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;
}

从 Datetime.Today 中减去一个月

只需通过"添加"-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;

如果你像 Adil H. Raza 一样,不喜欢在你的代码中使用负数,你也可以创建一个扩展方法:

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

并像使用它一样使用

var lastmonth = DateTime.Today.SubtractMonths(1);