什么是在.NET中处理空日期的标准方法

Red*_*wan 4 c# asp.net null datetime

我有使用C#的asp.net表单,我正在使用Linq将用户信息像往常一样插入数据库.好.我也从用户那里获取出生日期,但是如果用户从ui跳过填写日期文本框,那么我得到像'01/01/0001'这样的日期,这肯定是数据库安全性不允许的存储它.

所以我需要在我的代码中的某处检查它是null还是以这种(上面给出的)格式.如果它为null或格式为'01/01/0001'那么我究竟要做什么?我没有日期的任何默认值.

那么,如果date为null(但不是强制性的),那么处理的标准方法是什么.请指导我.很多次,我发现自己处于陷阱,同时处理各种类型的null.

编辑 看看我做了什么似乎在这里工作.但我不这么认为这是标准方式:

DateTime? otxtDOB = new DateTime();
                    if (!string.IsNullOrEmpty(DOB))
                    {
                    if (Convert.ToDateTime(DOB) != DateTime.MinValue)
                        {
                        otxtDateOfPurchese = Convert.ToDateTime(Convert.ToDateTime(DOB).ToString("dd-MMM-yyyy"));
                        }
                    else
                    {
                     otxtDOB = null;
                        }

                    }
Run Code Online (Sandbox Code Playgroud)

请确认我这是正确的方法吗?

Mas*_*sif 11

如果用户没有设置日期属性Nullable(即" DateTime?"),则应该允许它实际为空.(并且假设您的数据库列将允许空值,它可以在数据库中存储为null)

否则它将默认为DateTime.MinValue你在这里看到的.DateTime.MinValue在添加到数据库时,您必须进行明确的测试.


Nav*_*utt -2

您可以在传递到数据库时使用它。

object datetimeObj = null;
if (datetimefromUI == DateTime.MinValue) // This is put in the DateTime object by default
    datetimeObj = DBNull.Value;
else
    datetimeObj = datetimefromUI;

// Post datetimeObj to parameter in database...
Run Code Online (Sandbox Code Playgroud)

  • C# 有可空值,应该使用它们。 (2认同)