如何检查DateTime是否为null

时间:2012-02-12 15:00:16

标签: c# datetime null calendar

我有两个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。谢谢!

3 个答案:

答案 0 :(得分:13)

DateTime本身不能为空 - 使用DateTime?又名Nullable<DateTime>来表示可以为空的值是最干净的。

目前尚不清楚CalendarFromCalendarTo是什么,但他们可能不支持Nullable<DateTime> - 但最好将转化集中在这里,以便您可以使用{{ 1}}无处不在其他,而不是直接使用Nullable<DateTime>CalendarFrom

答案 1 :(得分:4)

DateTime是一个结构,所以它永远不能为空。

我可以想到两个选择:

  1. 如果您确实要支持null,请使用DateTime?创建可为空的DateTime。

  2. 或者,您的应用程序可能只需将DateTime值设置为默认值即表示未设置实际值。对于此默认值,您可以使用default(DateTime)DateTime.MinValue之类的内容。

答案 2 :(得分:3)

我不确定你的CalenderFrom和CalenderTo是什么;但我假设他们是静态的classess。基于这个假设,我就是这样编写代码的。

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))
            {
            }