C# 数据库中的DateTime null

C# 数据库中的DateTime null,c#,datetime,C#,Datetime,正如我上面的标题一样,我在数据库中得到了一个DateTime数据类型的表,它是空值。我得到了我正在使用的这行代码,但我不知道为什么它返回12:00 因此,正如您在我的代码中看到的,如果datetime的值为null,我希望显示00:00,如果它不是null,则显示当前值 注 12小时制 您应该使用HH:mm格式 在转换它们之前,应该检查null,否则可能会从convert方法中得到异常。根据注释,FACorrectionIn1的类型似乎是DateTime,如果是,则必须检查并将其与DateTim

正如我上面的标题一样,我在数据库中得到了一个DateTime数据类型的表,它是空值。我得到了我正在使用的这行代码,但我不知道为什么它返回12:00

因此,正如您在我的代码中看到的,如果datetime的值为null,我希望显示00:00,如果它不是null,则显示当前值

12小时制

您应该使用HH:mm格式


在转换它们之前,应该检查null,否则可能会从convert方法中得到异常。根据注释,FACorrectionIn1的类型似乎是DateTime,如果是,则必须检查并将其与DateTime.MinValue进行比较如果是可为空的DateTime,则还可以检查是否为空

为什么在数据库中的值为 空的

同样的原因FACorrectionIn1是一个DateTime对象,因此它不会为null,因此检查null的条件变为false,因为它的默认值是01/01/0001 00:00:00。因此,当您使用.toString:mm格式化它们时,您将得到12:00。所以你必须这样做:

string FitaCorIn1 = req.FACorrectionIn1 == DateTime.MinValue ? "00:00" : 
                                           Convert.ToDateTime(req.FAIn1).ToString("hh:mm");
如果您将解析改为Convert.To..,那就太好了。

我现在知道了。。多亏了斯宾塞7593。。这是我现在的代码

 string FitaCorIn1 = req.FACorrectionIn1 == null ? "00:00" : Convert.ToDateTime(req.FACorrectionIn1).ToString("hh:mm");
 string FitaCorOut1 = req.FACorrectionOut1 == null ? "00:00" : Convert.ToDateTime(req.FACorrectionOut1).ToString("hh:mm");

req.FACorrectionIn1是数据库中的值吗?@幸运的是,它们在数据库中都为空。看起来它返回的是12:00,因为ToString方法返回的是12:00。将其与null进行比较并不是将计算结果与TRUE进行比较。也许您不想将ToString的返回值与null进行比较。也许你甚至不需要调用ToDateTime方法。也许您只是想检查FACorrectionIn1成员是否为null。@KiRa req.FACorrectionIn1是什么.Net类型?它们是字符串还是日期time@KiRa,除非更改为可为null的类型,否则DateTime不能为null。如果输入的值为null,ConvertTo.DateTime将返回DateTime.MinValue。DbNull是什么意思?@KiRa:关键字null表示无效引用。类System.DbNull表示数据库字段中不存在的值,有关差异的更多信息,请参阅。如果我使用了您的方法,则我得到了一个错误。运算符“==”不能应用于“System.DateTime”和System.DBNull.类型的操作数。。如果我使用single'=',我还遇到一个错误,无法将类型“System.DBNull”隐式转换为bool。@KiRa:这意味着它是一个DateTime对象,因此如果字段是可为null的类型DateTime.MinValue,则必须使用null进行比较。请参阅my Updates看起来db中的列可以为null,但类的属性不能为null。您需要将属性类型更改为DateTime?。另外,您确定db表中的列可以为空吗?这些属性似乎已经是日期时间,因此不需要转换它们。此外,DateTime不能为null,因此条件语句将始终转到else语句。
string FitaCorIn1 = req.FACorrectionIn1 == DateTime.MinValue ? "00:00" : 
                                           Convert.ToDateTime(req.FAIn1).ToString("hh:mm");
 string FitaCorIn1 = req.FACorrectionIn1 == null ? "00:00" : Convert.ToDateTime(req.FACorrectionIn1).ToString("hh:mm");
 string FitaCorOut1 = req.FACorrectionOut1 == null ? "00:00" : Convert.ToDateTime(req.FACorrectionOut1).ToString("hh:mm");