我想知道如何使用DateTime方法
我只需要毫秒或秒的容差水平。
应该怎么做?
Compare
、CompareTo
或Equals
在.NET中比较两个DateTime对象,而不需要比较ticks。我只需要毫秒或秒的容差水平。
应该怎么做?
DateTime
从另一个DateTime
中减去,以生成一个表示它们之间时间差的TimeSpan
。然后,您可以测试该跨度的绝对值是否在您所需的公差范围内。bool dtsWithinASecOfEachOther = d1.Subtract(d2).Duration() <= TimeSpan.FromSeconds(1);
TimeSpan.Duration()
可以省略,如果你知道第一个 DateTime
不能代表比另一个更早的时间点,即 d1 >= d2
。DateTime.Compare(d1, d2)
产生与 d1.CompareTo(d2)
相同的结果:
d1.Equals(d2)
, d1 == d2
),则返回0。请注意,DateTime 的分辨率为 1 刻度 = 100 纳秒 = 10 ^ -7 秒。d1 > d2
)d1 < d2
)TimeSpan
进行容差检查 - TimeSpan
是从两个日期时间相减后返回的类型:TimeSpan tolerance = new TimeSpan(0,0,1);
return (date1 - date2) <= tolerance;
Compare
, CompareTo
和Equals
都没有容忍比较的参数,所以不能这样使用。
其他选项是从现有的日期时间创建新的DateTime
,丢弃不需要的精度并比较新的日期时间:
DateTime noSeconds1 = new DateTime(d1.Year, d1.Month, d1.Day, d1.Hour, d1.Minute, 0);
DateTime noSeconds2 = new DateTime(d2.Year, d2.Month, d2.Day, d2.Hour, d2.Minute, 0);
noSeconds1.Equals(noSeconds2);
DateTime.Compare(noSeconds1, noSeconds2);
noSeconds1.CompareTo(noSeconds2);
通常情况下,如果您想要一个单一的比较来告诉您哪个日期更早、相等或更晚,可以使用DateTime.Compare()。否则,您可以使用DateTime.Equals()。要添加容差值,请从一个日期减去另一个日期,并将结果与某个TimeSpan进行比较:
// For seconds
if (laterDate-earlierDate<=TimeSpan.FromSeconds(1))
...
// For milliseconds
if (laterDate-earlierDate<=TimeSpan.FromMilliseconds(1))
...