如何将空值初始化为datetime变量?

dot*_*net 6 c# asp.net

我想检查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() });
Run Code Online (Sandbox Code Playgroud)

错误:

错误2无法将类型'string'隐式转换为'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() : ""
                });
Run Code Online (Sandbox Code Playgroud)

is_*_*_oz 3

我尝试使用 string.Empty 来测试:starttime = string.IsNullOrEmpty(str) ? (DateTime?)null : DateTime.Now;

就成功了。所以你的代码可以是:

starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? (DateTime?)null : rdr.GetDateTime(4);
    endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? (DateTime?)null: rdr.GetDateTime(5);
Run Code Online (Sandbox Code Playgroud)

更新 1:string.Empty 的 .Net Fiddle 示例:链接