2010-09-15 60 views
2

我從XML文件中獲取數據,有時日期爲空。如何向datetime var中插入空或空字符串?

我有這樣的代碼:

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

,但我得到的錯誤,因爲我不能插入空爲datetime VAR

我可以做什麼?

thak的預先

回答

12

讓TimeTo可空的屬性是這樣的:

public DateTime? TimeTo { get; set; } 

比th更好的解決方案Ë的try/catch是做這樣的事情:

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

謝謝!是工作 !! – Gold 2010-09-15 15:00:08

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; 
+0

引用它的另一種有用方法是使用摺疊操作符。表達式看起來像'TimeTo?如果前者爲null,則解析爲後者。 – 2010-09-15 14:47:09

+0

對不起,'''是C#中的空合併運算符。 – 2010-09-15 14:57:50

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) 
} 
相關問題