比较可空的日期时间对象

fai*_*gir 13 c# datetime compare nullable

我有两个可以为空的日期时间对象,我想比较两者.最好的方法是什么?

我已经尝试过了:

DateTime.Compare(birthDate, hireDate);
Run Code Online (Sandbox Code Playgroud)

这是一个错误,也许是期待类型的日期,System.DateTime我有Nullable日期时间.

我也尝试过:

birthDate > hiredate...
Run Code Online (Sandbox Code Playgroud)

但结果不如预期......任何建议?

Hab*_*bib 21

比较两个Nullable<T>对象使用Nullable.Compare<T>如下:

bool result = Nullable.Compare(birthDate, hireDate) > 0;
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

使用Nullable DateTime的Value属性.(请记住检查两个对象是否都有一些值)

if ((birthDate.HasValue && hireDate.HasValue) 
    && DateTime.Compare(birthDate.Value, hireDate.Value) > 0)
{
}
Run Code Online (Sandbox Code Playgroud)

如果两个值都相同DateTime.Compare将返回给您 0

就像是

DateTime? birthDate = new DateTime(2000, 1, 1);
DateTime? hireDate = new DateTime(2013, 1, 1);
if ((birthDate.HasValue && hireDate.HasValue) 
    && DateTime.Compare(birthDate.Value, hireDate.Value) > 0)
{
}
Run Code Online (Sandbox Code Playgroud)

  • 如果nullable没有值,则尝试访问Value属性时会出现异常 (3认同)

Vis*_*har 12

Nullable.Equals指示两个指定的Nullable(Of T)对象是否相等.

尝试:

if(birthDate.Equals(hireDate))
Run Code Online (Sandbox Code Playgroud)

最好的方法是:Nullable.Compare方法

Nullable.Compare(birthDate, hireDate));
Run Code Online (Sandbox Code Playgroud)