我有两个DateTime
如下:
DateTime startDate = CalendarFrom.SelectedDate;
DateTime endDate = CalendarTo.SelectedDate;
现在,我想检查是否选择了startDate
和endDate
。据我所知,我们不能为DateTime
分配null,所以我这样写:
if (startDate == DateTime.MinValue && endDate == DateTime.MinValue)
{
// actions here
}
但是我意识到,对于endDate
,它不是“1/1/0001 12:00:00 AM”,因此无法使用DateTime.MinValue
进行检查。
我想知道如何检查endDate
。谢谢!
答案 0 :(得分:13)
DateTime
本身不能为空 - 使用DateTime?
又名Nullable<DateTime>
来表示可以为空的值是最干净的。
目前尚不清楚CalendarFrom
和CalendarTo
是什么,但他们可能不支持Nullable<DateTime>
- 但最好将转化集中在这里,以便您可以使用{{ 1}}无处不在其他,而不是直接使用Nullable<DateTime>
和CalendarFrom
。
答案 1 :(得分:4)
DateTime
是一个结构,所以它永远不能为空。
我可以想到两个选择:
如果您确实要支持null,请使用DateTime?
创建可为空的DateTime。
或者,您的应用程序可能只需将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))
{
}