【问题标题】:How to set a dateTimePicker value to DateTime.MaxValue如何将 dateTimePicker 值设置为 DateTime.MaxValue
【发布时间】:2009-10-25 13:01:49
【问题描述】:

这会在运行时产生错误:

dateTimePicker.Value = DateTime.MaxValue;

【问题讨论】:

    标签: c#


    【解决方案1】:

    你不能。

    DateTimePicker 支持的最大日期为DateTimePicker.MaximumDateTime,即12/31/9998; DateTime.MaxValue 是 12/31/9999 23:59:59,也就是一年零一天之后。

    你能用DateTimePicker.MaximumDateTime代替DateTime.MaxValue吗?

    【讨论】:

    • 当然我现在知道了:)
    • 知道为什么这些不同吗?我在 Google 上找不到任何解释。
    • 我不知道;我快速浏览了源代码,并没有发现明显的原因。
    • 也许是因为人们可能想对 DateTime 进行一些“数学运算”,结果可能会超出 2 个输入的范围。
    【解决方案2】:

    您需要使用DateTimePicker.MaximumDateTime 属性。日期时间选择器允许的最大值是 31/12/9998,由 DateTimePicker.MaximumDateTime 表示。而DateTime.MaxValue 的值是 31/12/9999。

    【讨论】:

      【解决方案3】:

      是的,你可以,但它很脏(使用它需要你自担风险)。基本上,它会用 DateTime 对象中的 MaxValue 覆盖 DateTimePicker 中定义的 MaxValue。

      将此代码粘贴到 Main(或在启动期间运行的任何方法):

      var dtpType = typeof(DateTimePicker);
      var field = dtpType.GetField("MaxDateTime", BindingFlags.Public | BindingFlags.Static);
      if (field != null)
      {
          field.SetValue(new DateTimePicker(), DateTime.MaxValue);
      }
      

      【讨论】:

        【解决方案4】:

        也许这有帮助:

        这个常数的值是 相当于 23:59:59.9999999, 9999 年 12 月 31 日,正好是一个 00:00:00 之前的 100 纳秒滴答声, 10000 年 1 月 1 日。

        一些日历,例如 UmAlQuraCalendar,支持鞋面 早于的日期范围 最大值。在这些情况下,试图 访问变量中的 MaxValue 分配或格式化和解析 操作可以抛出 参数超出范围异常。相当 而不是检索值 DateTime..::.MaxValue,你可以 检索指定的值 文化的最新有效日期值 这 System.Globalization.CultureInfo.DateTimeFormat.Calendar.MaxSupportedDateTime 属性。

        公然抄自msdn

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多