在 c# 中离开日期时间选择器 returns 1 / 1 / 0001 12:00:00 AM

leave datetime picker returns 1 / 1 / 0001 12:00:00 AM in c#

我在 class

中定义了这个
 public DateTime? LineCheckSubmitDateTime { set; get; }

我需要使用 gridview

初始化这个变量

但有时我需要将此值保留为空,但是当我保留它时 returns 1 / 1 / 0001 12:00:00 AM

所以这是我的代码:

 newObj.LineCheckSubmitDateTime = (Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"))==DateTime.Parse("1 / 1 / 0001 12:00:00 AM") ) ?   Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime")):null;

所以两个问题:

1:此代码 returns 此错误:

Severity    Code    Description Project File    Line
Error   CS0173  Type of conditional expression cannot be determined because there is no implicit conversion between 'DateTime' and '<null>' 

2:你有更好的解决方案吗?

错误是因为您必须将条件运算符的至少一个操作数显式转换为 DateTime?

更好的方法是将它与 DateTime.MinValue 进行比较,而不是将最小日期字符串转换为 DateTime,同时缓存转换后的值,然后在条件运算符中使用它转换它两次。

var tempDateConverted = Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"));
 newObj.LineCheckSubmitDateTime = tempDateConverted == DateTime.MinValue ?
                                    null : (DateTime?) tempDateConverted;

您也可以在上述语句中显式null转换为DateTime?

我不确定 GridView 中的 LineCheckSubmitDateTime 控件,有可能它的值已经是一个 DateTime 对象,在 object 中返回。你也可以试试:

object obj = gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime");
newObj.LineCheckSubmitDateTime = (DateTime?) obj;

有了上面的代码,就不用调用Convert.ToDateTime了。