比较c#中的日期,考虑空值

比较c#中的日期,考虑空值,c#,C#,我是c#的新手。我比较了两个日期,一个是用户输入的,另一个是系统日期时间。我有代码,因为它的立场,障碍已经发生,是如何迎合空值。我的基本准则是: if (mydate.ToShortDateString() != TodaysDate.ToShortDateString()) { //Error Messaage } else { //do some code } 任何反馈都将受到欢迎您可以将mydate声明为DateTime?,然后它可以保存空值 至于如何处理错误,这取决于mydate的

我是c#的新手。我比较了两个日期,一个是用户输入的,另一个是系统日期时间。我有代码,因为它的立场,障碍已经发生,是如何迎合空值。我的基本准则是:

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

{
//Error Messaage
}

else
{
//do some code
}

任何反馈都将受到欢迎

您可以将mydate声明为
DateTime?
,然后它可以保存空值

至于如何处理错误,这取决于mydate的空值是否被视为错误。如果是错误,您可以执行以下操作:

if (mydate == null || mydate.ToShortDateString() != TodaysDate.ToShortDateString()) {
    // error
}
if (mydate != null && mydate.ToShortDateString() != TodaysDate.ToShortDateString()) {
    // error
}
如果不是错误情况,您可以执行以下操作:

if (mydate == null || mydate.ToShortDateString() != TodaysDate.ToShortDateString()) {
    // error
}
if (mydate != null && mydate.ToShortDateString() != TodaysDate.ToShortDateString()) {
    // error
}
如果您没有将mydate声明为
DateTime?
而只是将其声明为
DateTime
,则可以检查
DateTime.MinValue
,如下所示(
DateTime.MinValue
DateTime
变量的默认值):


为什么要将它们转换为字符串?为什么不像在
date1.date!=日期2.日期

使用??接线员:

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

else
{
//do some code
}

DateTime不可能为空,是吗?日期时间是值类型。此外,如果(mydate==TodaysDate)@Phil DateTime不能为空,则可以直接比较DateTime对象,例如DateTime?可以是可为空的类型。此外,将日期时间相互比较也会考虑完整的日期和时间,而不仅仅是OP中提到的日期。我想知道这一点。也许只比较DateTime的日期部分?@Phil:我想是的,但这就是
date
属性的作用。