一段时间以来,我一直在寻找答案,但实际上我无处可寻。
我特别看这个页面。它说该CompareTo
方法返回一个整数,指示它是更早、相同还是更晚。我理解它的用法,并且我理解在早期整数是负数,同样它是 0 等等。
但是这个整数是什么?它是否返回以秒、毫秒、滴答为单位的差异,或者根本没有返回差异?我希望你能帮我解决这个问题,如果有人能找到另一个关于这个问题的帖子,请告诉我。老实说,我很惊讶我不能马上找到关于这个话题的问题......
该文档实际上在IComparable接口页面(DateTime 实现)中:http: //msdn.microsoft.com/en-us/library/system.icomparable.aspx
CompareTo(Object) 方法的实现必须返回具有三个值之一的 Int32,如下表所示。
小于零:当前实例在排序顺序中位于 CompareTo 方法指定的对象之前。
零:此当前实例与 CompareTo 方法指定的对象出现在排序顺序中的相同位置。
大于零:此当前实例在排序顺序中遵循 CompareTo 方法指定的对象。
根据 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)
这是一个您永远不需要知道并且可以随时更改的实现细节。仅有的 3 个类别是:
如果你发现自己使用了更多的东西,那么就有问题了。
据我所知,数字始终为 -1、0 或 1。
它是IComparable.CompareTo的实现。这意味着它将在相等时返回 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;
}