【发布时间】:2017-04-29 00:13:48
【问题描述】:
我正在尝试检查DateTime 变量"starttime" 和"endtime" 是否具有null 值,然后尝试初始化为empty 值,如下所示,但我遇到了以下编译错误。实现这一目标的最佳方法是什么?
string htmllink = "";
DateTime? starttime = null;
DateTime? endtime = null;
htmllink = (dbNullCheck.isColumnNull(rdr, "html_link")) ? "" : rdr.GetString(3);
starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? "" : rdr.GetString(4);
endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? "" : rdr.GetString(5);
results.htmllist.Add(new gethtmllist() { resulthtmllink = htmllink,
duration = (starttime - endtime).ToString() });
错误:
错误 2 无法将类型“字符串”隐式转换为“System.DateTime?”
更新:-
string htmllink = "";
htmllink = (dbNullCheck.isColumnNull(rdr, "html_link")) ? "" : rdr.GetString(3);
DateTime? starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? new DateTime() : rdr.GetDateTime(4);
DateTime? endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? new DateTime() : rdr.GetDateTime(5);
results.htmllist.Add(new gethtmllist()
{
resulthtmllink = htmllink,
duration = starttime.HasValue && endtime.HasValue ? (endtime.Value - starttime.Value).ToString() : ""
});
【问题讨论】:
-
rdr 有 GetDateTime 方法吗?或者 GetValue 返回您可能能够转换的对象?如果一切都失败了,则将字符串传递给 DateTime.Parse()。无论如何,空值只是空值。空很容易。你是从哪里得到 null 意味着任何东西而不是空的想法?