繁体   English   中英

离开日期时间选择器在C#中返回1/1/0001 12:00:00 AM

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

我在课堂上定义

 public DateTime? LineCheckSubmitDateTime { set; get; }

我需要使用gridview初始化此变量

在此处输入图片说明

但是有时我需要将此值保留为null,但是当我将其保留时,它将返回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:此代码返回此错误:

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? 在上述声明中。

我不确定GridViewLineCheckSubmitDateTime控件,这很可能是它的值已经是一个DateTime对象,并在object内部返回。 您也可以尝试:

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

使用上面的代码,您不必调用Convert.ToDateTime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM