在 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
了。
我在 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
了。