Datetime.Today减去一个月
Subtract one month from Datetime.Today
我有一个 DateTimePicker
,我允许用户在当前年份的前 select 个月。
问题是,如果日期是 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;
}
只需通过“加”-1 减去一个月:
var lastmonth = DateTime.Today.AddMonths(-1);
请参阅 DateTime.AddMonths
上的 MSDN 文档。
帕特里克知道了。要基于他的答案并改进错误处理(如果 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);
我有一个 DateTimePicker
,我允许用户在当前年份的前 select 个月。
问题是,如果日期是 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;
}
只需通过“加”-1 减去一个月:
var lastmonth = DateTime.Today.AddMonths(-1);
请参阅 DateTime.AddMonths
上的 MSDN 文档。
帕特里克知道了。要基于他的答案并改进错误处理(如果 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);