2012-02-12 58 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之类的东西。

相关问题