怎么转换DateTime?到C#中的DateTime以及如何比较两个日期

时间:2019-04-15 02:55:56

标签: c# datetime

我要转换一个DateTime吗?值到DateTime值。然后将DateTime值与C#中的DateTime.MaxValue进行比较。即使值相同。我得到-1的DateTime比较。我是C#的新手。以下代码在哪里出问题了?

我已搜索并在堆栈溢出时找到了此相关链接。但是我不知道如何解决它: How to convert DateTime? to DateTime

private DateTime? expires = null;

public DateTime? DateExpires {
    get
    {
         System.Diagnostics.Debug.WriteLine("DateTime Max Value: " + DateTime.MaxValue);
         System.Diagnostics.Debug.WriteLine("Date expires: " + expires);
         System.Diagnostics.Debug.WriteLine("Date expires value: " + expires.Value);

         if (expires.HasValue)
         {
             System.Diagnostics.Debug.WriteLine("I have some value");
             DateTime dtime = expires.Value;
             System.Diagnostics.Debug.WriteLine("Dtime value: " + dtime);

             int result = DateTime.Compare(dtime, DateTime.MaxValue);
             System.Diagnostics.Debug.WriteLine("Compared result: " + result);

         } else
         {    
             System.Diagnostics.Debug.WriteLine("I don't have any value");
         }

         return expires.Value;
     }
     set
     {
          expires = value;
     } 
}

这是代码的结果:

DateTime Max Value: 12/31/9999 11:59:59 PM
Date expires: 12/31/9999 11:59:59 PM
Date expires value: 12/31/9999 11:59:59 PM
I have some value
Dtime value: 12/31/9999 11:59:59 PM
Compared result: -1

更新:

在其中一种方法中,设置了expires的值

_model.expires = _model.expires != null ? _model.expires.Value : DateTime.MaxValue;

1 个答案:

答案 0 :(得分:2)

日期时间在某些方面有所不同。可能处于毫秒级?也许是时区还是UTC类型。

它们绝对是一种不同的方式。可空的datetimes在其Value属性中返回一个DateTime对象,因此不需要进行转换。