我一直在寻找一段时间的答案,但实际上我找不到它。
我特别关注this page。它表示CompareTo
方法返回一个整数,表示它是更早,相同还是更晚。我理解它的使用,我明白早期的整数是负的,因为它是0等。
但是这个整数是多少?它是以秒,毫秒,刻度还是根本没有返回差异?我希望你可以帮助我,如果有人能找到这个问题的另一篇文章,请告诉我。老实说,我很惊讶我无法立即找到关于这个主题的问题......
答案 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;
}