我有两个日期,我如何比较这两个日期并忽略毫秒的差异?
DateTime dte1 = (DateTime)entity.secondDate;
DateTime dte2 = (DateTime)entity.firstDate;
if (DateTime.Compare(dte1, dte2)!=0)
throw new HttpRequestException(ExceptionMessages.CONCURRENCY_UPDATE);
感谢。
答案 0 :(得分:7)
这是最简单的方法,如果我们将你的问题用于表示“我如何比较两个DateTime对象并认为它们相等,如果它们小于,例如相隔100毫秒?”
double diff = if (dte1.Subtract(dte2)).TotalMilliseconds;
if (Math.Abs(diff) < 100)
{
Console.WriteLine("It's all good.");
}
答案 1 :(得分:2)
在比较两者之前,只需执行以下操作:
firstDateTime = firstDateTime.AddMilliseconds(-firstDateTime.Millisecond);
secondDateTime = secondDateTime.AddMilliseconds(-secondDateTime.Millisecond);
答案 2 :(得分:2)
为什么不将DateTime
解析为你想要的最高精度(我假设你想要yyyy-MM-dd HH:mm:ss)。然后比较它们。我意识到这是一个有点长的啰嗦,但答案是非常少的。
DateTime dte1 = (DateTime)entity.secondDate;
DateTime dte2 = (DateTime)entity.firstDate;
if (DateTime.Compare(DateTime.ParseExact(dte1.ToString("yyyy-MM-dd HH:mm:ss"),
"yyyy-MM-dd HH:mm:ss",
null),
DateTime.ParseExact(dte2.ToString("yyyy-MM-dd HH:mm:ss"),
"yyyy-MM-dd HH:mm:ss",
null)) != 0)
{
throw new HttpRequestException(ExceptionMessages.CONCURRENCY_UPDATE);
}
抱歉格式错误,只是尝试最小化水平滚动。这避免了标记答案出现的问题。
答案 3 :(得分:2)
我做了这个扩展方法
public static bool IsEqual(this DateTime start, DateTime end, long toleranceInMilliseconds = -1)
{
if (toleranceInMilliseconds < 0)
toleranceInMilliseconds = 0;
return Math.Abs((start - end).TotalMilliseconds) < toleranceInMilliseconds;
}