2010-06-16 110 views
3

我是新來的C#。我正在比較兩個日期,其中一個是由用戶輸入的,另一個是系統日期時間。我有代碼工作,因爲它的障礙發生的地方是如何迎合空值。基本代碼我已經是:比較C#中的空值的日期

if (mydate.ToShortDateString() != TodaysDate.ToShortDateString()) 

{ 
//Error Messaage 
} 

else 
{ 
//do some code 
} 

任何反饋將不勝感激

+2

DateTime不可能爲空嗎?日期時間是值類型。你也可以直接比較DateTime對象,即'if(mydate == TodaysDate)' – 2010-06-16 12:05:01

+0

@Phil DateTime不能爲null,但是DateTime?可以是 - 可空類型。同時比較日期時間和日期時間,並不一定只是在OP中隱含的日期。 – 2010-06-16 12:09:53

回答

0

你可以聲明指明MyDate作爲DateTime?,那麼它可以容納空值。

至於如何處理錯誤,它取決於mydate的空值是否被認爲是錯誤的。如果它是一個錯誤,你可以這樣做:

if (mydate == null || mydate.ToShortDateString() != TodaysDate.ToShortDateString()) { 
    // error 
} 

如果它不是一個錯誤,你可以這樣做:

if (mydate != null && mydate.ToShortDateString() != TodaysDate.ToShortDateString()) { 
    // error 
} 

如果你不聲明指明MyDate作爲DateTime?而只是聲明爲DateTime ,那麼你可以檢查DateTime.MinValue,像這樣(DateTime.MinValue是默認值的DateTime變量):

if (mydate == DateTime.MinValue || mydate.ToShortDateString() != TodaysDate.ToShortDateString()) { 
    // error 
} 
2

爲什麼你將它們轉換爲字符串?爲什麼不只是比較他們的日期部分,如date1.Date != date2.Date

+0

我想知道。也許只是比較日期時間的日期部分? – 2010-06-16 12:09:06

+1

@Phil:我是這麼認爲的,但這就是'Date'屬性的作用。 – 2010-06-16 12:15:35

0

使用??運算符:

if ((mydate??DateTime.MinValue).ToShortDateString() != TodaysDate.ToShortDateString()) 
{ 
//Error Messaage 
} 

else 
{ 
//do some code 
}