C# 比较可为空的DateTime变量的默认值

C# 比较可为空的DateTime变量的默认值,c#,datetime,nullable,C#,Datetime,Nullable,在我的C代码中,我有一个DateTime?变量。从数据库获取值时,它可以是null,也可以有一些日期/时间值 在前端,我不想得到默认值(01-01-1900 12:00:00 am)。将my date变量与此默认日期进行比较的最佳方法是什么?您可以创建常量: static readonly DateTime DefaultDateTime = new DateTime(1900, 1, 1, 0, 0, 0); 然后用这种方式比较: DateTime? myVariable = returne

在我的C代码中,我有一个
DateTime?
变量。从数据库获取值时,它可以是
null
,也可以有一些日期/时间值


在前端,我不想得到默认值(01-01-1900 12:00:00 am)。将my date变量与此默认日期进行比较的最佳方法是什么?

您可以创建常量:

static readonly DateTime DefaultDateTime = new DateTime(1900, 1, 1, 0, 0, 0);
然后用这种方式比较:

DateTime? myVariable = returnedFromDb == DefaultDateTime ? default(DateTime?) : returnedFromDb;

您可以有一个扩展方法,如下所示:

public static class DateTimeExtensions
{
    static DateTime SQL_DEFAULT = new DateTime(1900, 1, 1);

    public static bool IsDefaultValue(this DateTime dateTime)
    {
        return dateTime == SQL_DEFAULT;
    }
}
然后只需测试值:


var isDefault=myDate.IsDefaultValue()

您的数据库是否确实为您的列存储了
null
?否如果值为null,数据库将存储“01-01-1900”。也许您应该让数据库存储为null而不是“01-01-1900”?我是第二个Torben。但是,如果你的数据库永远不会使用这个日期,那就继续吧——没有必要为一件不会打扰你的应用程序的小事做太多的变通。