如何将null或空字符串插入datetime var?

时间:2010-09-15 14:39:09

标签: c# winforms

我从xml文件中获取数据,有时日期为空。

我有这段代码:

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }    
catch { TimeTo = null ; }

但我收到错误,因为我无法将null插入日期时间var

我能做什么?

提前预定

3 个答案:

答案 0 :(得分:13)

让TimeTo成为可以为空的属性:

public DateTime? TimeTo { get; set; }

比try / catch更好的解决方案是执行以下操作:

TimeTo = string.IsNullOrEmpty(R[15].ToString()) 
           ? (DateTime?) null 
           : DateTime.Parse(R[15].ToString());

答案 1 :(得分:5)

DateTime是值类型,因此无法分配null。但...

DateTime.MinValue是一个很好的替代品,可以帮助指出缺乏价值。

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }    
catch { TimeTo = DateTime.MinValue; }

另一个选择是使用可空类型:

DateTime? TimeTo = null;

并像这样引用它:

if (TimeTo.HasValue)
   something = TimeTo.Value;

答案 2 :(得分:3)

稍微切线,如果你期望R [15]可能不是日期时间我会建议TryParse是更好的选择

if(DateTime.TryParse(R[15].ToString(),out TimeTo))
{
     //TimeTo is set to the R[15] date do stuff you need to if it is good
}
else
{
    //TimeTo is default (i.e. DateTime.MinValue) do stuff for a bad conversion (e.g. log, raise exception etc)
}