2012-02-12 130 views
3

我有我的兩個DateTime如下:如何檢查日期時間爲空

 DateTime startDate = CalendarFrom.SelectedDate; 
     DateTime endDate = CalendarTo.SelectedDate; 

現在,我想如果startDateendDate選擇或不檢查。據我所知,我們無法DateTime所以我這樣寫null分配:

 if (startDate == DateTime.MinValue && endDate == DateTime.MinValue) 
     { 
      // actions here 
     } 

但是我意識到,爲endDate,它不是「1/1/0001 12:00:00 AM」所以不能使用DateTime.MinValue進行檢查。我想知道如何檢查endDate。謝謝!

+0

在這種情況下,您希望重新發布爲null的日期以NOT DateTime.MinValue的形式返回。然後使用常量來表示您正在使用的日曆控件中對應於null的值。 – 2013-05-03 03:25:19

回答

13

A DateTime本身不能爲空 - 使用DateTime?又名Nullable<DateTime>來表示空值是最乾淨的。

目前還不清楚是什麼CalendarFromCalendarTo,但它們可能不支持Nullable<DateTime>自己 - 但是這將是一個好主意,這裏集中了轉換,所以你可以使用Nullable<DateTime>無處不在其他比你在哪裏直接使用CalendarFromCalendarTo

3

我不確定你的CalenderFrom和CalenderTo是什麼;但我假設他們是靜態分類。基於這個假設,這就是我將如何編寫這個代碼。

public static class CalendarFrom 
{ 
    public static DateTime SelectedFrom { get; set; } 
} 

public static class CalendarTo 
{ 
    public static DateTime SelectedDate { get; set; } 
} 

DateTime? startDate = CalendarFrom.SelectedFrom; 
      DateTime? endDate = CalendarTo.SelectedDate; 

      if (startDate.HasValue 
       && (startDate.Value != DateTime.MaxValue || startDate.Value != DateTime.MinValue)) 
      { 
      } 
4

DateTime是一個結構,所以它永遠不能爲空。

我能想到的兩個選項:

  1. 如果你真的想支持null,使用DateTime?創建一個可空的DateTime。

  2. 或者,在您的應用程序中簡單地將DateTime值設置爲表示未設置實際值的默認值可能是合適的。對於此默認值,您可以使用default(DateTime)或類似DateTime.MinValue之類的東西。