在设置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属性。这是荒谬的,因为我已经检查了这些条件。此外,当我在调试模式下检查时,这些值不支持错误。任何帮助都太好了!

在设置datetime时出现了可笑的mindate maxdate错误

你所有的决定的最终结果是你总是设置

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