在设置datetime时出现了可笑的mindate maxdate错误
本文关键字:可笑 mindate maxdate 错误 设置 datetime | 更新日期: 2023-09-27 18:10:33
我正在使用VS2013用c#编写一个桌面应用程序。我得到了一个荒谬的错误,在我看来,这是不应该产生的。我在代码中以这种方式设置DateTimePicker的MinDate和MaxDate属性:
DateTime minDate = DateTime.Parse(...);
DateTime maxDate = DateTime.Parse(...);
...
if (maxDate < dtpManuelFirst.MinDate)
{
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
}
else
{
if (minDate > dtpManuelFirst.MaxDate)
{
dtpManuelFirst.MaxDate = maxDate;
dtpManuelFirst.MinDate = minDate;
}
else
{
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
}
}
一开始我就知道minDate值总是小于maxDate值。当minDate大于dtpManuelFirst时。MaxDate像第二个if条件一样,它更新MaxDate属性没有问题,而我得到错误"值对MinDate无效"。MinDate必须小于MaxDate."更新MinDate属性。这是荒谬的,因为我已经检查了这些条件。此外,当我在调试模式下检查时,这些值不支持错误。任何帮助都太好了!
你所有的决定的最终结果是你总是设置
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
为什么不马上做呢?当你做同样的事情时,你不需要所有的if-else分支。
如果您仍然遇到问题,请先将dtpManuelFirst.MaxDate
设置为非常大的值。
dtpManuelFirst.MaxDate = DateTime.MaxValue;
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
我知道这个线程很老了,但也许这可能会帮助下一个人…也许他们应该考虑添加"完整的"DateTime范围:包括小时、分钟和秒。
DateTime firstDayInMonth = new DateTime(today.Year, today.Month, 1, 0, 0, 0);
DateTime lastDayInMonth = new DateTime(today.Year, today.Month, DateTime.DaysInMonth(today.Year, today.Month), 23, 59, 59);
设置MinDate为DateTimePicker。最小日期时间和最大日期到DateTimePicker。MaximumDateTime,然后再设置实际值。像下图:
dtpManuelFirst.MinDate = DateTimePicker.MinDateTime;
dtpManuelFirst.MaxDate = DateTimePicker.MaximumDateTime;
if (maxDate < dtpManuelFirst.MinDate)
{
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
}
else
{
if (minDate > dtpManuelFirst.MaxDate)
{
dtpManuelFirst.MaxDate = maxDate;
dtpManuelFirst.MinDate = minDate;
}
else
{
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
}
}