C#winforms日期时间选择器maxdate

时间:2016-05-18 11:09:10

标签: c# datetime datetimepicker

SQL Server和C#中的Datetime数据类型接受的最大日期似乎是31/12/9999 23:59:59。我试图将数据库(01/01/9999 00:00:00)从数据库分配给日期时间选择器。它说错了

DateTimePicker不支持日期为31/12/9998 00:00:00之后的日期 参数名称:MaxDate

现在我的问题是当两种数据类型兼容(datetime)时,为什么这些是Datetimepicker中的限制。这似乎是设计上的。可以让我知道为什么这个限制以及这个功能在设计中会有什么帮助?

谢谢

2 个答案:

答案 0 :(得分:1)

在正常操作中,日期时间选择器必须能够在所选日期之后显示日期。这意味着如果您选择了最大日期(9999年12月31日),那么理论上它必须显示1月1日10,000 - 它不能。

因此,选择器本身会将初始值限制为之前的任意值,因此可以显示后续日期。

我不认为这是一个问题。在现实世界的应用程序中,用户是否希望在未来设置7000年以上的日期?

如果您的应用程序有未设置日期,那么您可能需要考虑将它们存储为数据库中的null(即使列可以为空),以便在UI上将其显示为空白。这可能实际上使用户更容易发现尚未设置的日期。

答案 1 :(得分:1)

就像DateTimePicker检查

一样简单
<?xml version="1.0"?>
<ui xmlns="http://java.sun.com/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core">

    <define name="title">Welcome to Registiration Page!</define>

</ui>

定义为999年12月31日

这是来自referenceource的相关部分

DateTimePicker.MaximumDateTime

MaxDate检查DateTimePicker.MaximumDateTime

http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DateTimePicker.cs,040fca665238ae30