DateTime.CompareTo实际返回什么整数?

时间:2012-12-02 11:48:26

标签: c# datetime compareto

我一直在寻找一段时间的答案,但实际上我找不到它。

我特别关注this page。它表示CompareTo方法返回一个整数,表示它是更早,相同还是更晚。我理解它的使用,我明白早期的整数是负的,因为它是0等。

但是这个整数是多少?它是以秒,毫秒,刻度还是根本没有返回差异?我希望你可以帮助我,如果有人能找到这个问题的另一篇文章,请告诉我。老实说,我很惊讶我无法立即找到关于这个主题的问题......

6 个答案:

答案 0 :(得分:21)

文档实际上位于 IComparable 界面页面(DateTime实现): http://msdn.microsoft.com/en-us/library/system.icomparable.aspx

  

CompareTo(Object)方法的实现必须返回具有三个值之一的Int32,如下表所示。

     

小于零:当前实例位于指定对象之前   通过排序顺序中的CompareTo方法。

     

零:此当前实例出现在排序顺序中与CompareTo方法指定的对象相同的位置。

     

大于零:此当前实例遵循排序顺序中CompareTo方法指定的对象。

答案 1 :(得分:17)

根据MSDN,没有指定任何内容:

if (result < 0)
   relationship = "is earlier than";
else if (result == 0)
   relationship = "is the same time as";         
else
   relationship = "is later than";

如果你想比较2个DateTimes之间的天数,你应该寻找这样的东西:

if ((expiryDate - DateTime.Now).Days < 30)

答案 2 :(得分:2)

这是一个您永远不需要知道并且可以随时更改的实现细节。只有3个类别是:

  • 阳性

如果你发现自己使用的不仅仅是那些,那么就会出现问题。

答案 3 :(得分:0)

据我所知,数字总是-1,0或1。

答案 4 :(得分:0)

IComparable.CompareTo的实施。这意味着如果相等则返回0,如果更大则返回正整数,小时则返回负整数。

答案 5 :(得分:0)

您可以选择与TimeSpan比较的特定单位

DateTime local_time = DateTime.Now; //current time

DateTime remote_time = DateTime.Now.AddMinutes(-2); //two minutes delayed

TimeSpan time_difference = (local_time - remote_time);

if (time_difference.Minutes <= 5) //compare specific units desired

{

bool within_tollerance = true;

}