我要转换一个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;
答案 0 :(得分:2)
日期时间在某些方面有所不同。可能处于毫秒级?也许是时区还是UTC类型。
它们绝对是一种不同的方式。可空的datetimes在其Value属性中返回一个DateTime对象,因此不需要进行转换。