确定日期时间值的平等与内LINQ分钟的精度(Determine equality of Dateti

2019-09-22 22:21发布

我需要比较两个日期时间值来确定的平等(完全一样),用分钟precision.Would这是做到这一点的最好方法是什么? 我的日期可能有秒和毫秒,但我想只有下来,直到分钟考虑。

       where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)

Answer 1:

检查是否Math.Abs(diff.TotalMinutes) == 0不会做它,没有-这是检查它们是否是完全一样的。

你们是不是要检查它们是否具有相同分钟,或者他们是否是小于每隔一分钟? 对于一,用途:

where RoundToMinute(dateTime1) == RoundToMinute(dateTime2)

已宣布:

public static DateTime RoundToMinute(DateTime time)
{
    return new DateTime(time.Year, time.Month, time.Day,
                        time.Hour, time.Minute, 0, time.Kind);
}

对于第二个,使用:

where Math.Abs((dateTime1 - dateTime2).TotalMinutes) < 1

你应该考虑你想要的结果是,一个是本地,一个是UTC,顺便的情况下什么...

请注意,有没有什么具体的LINQ,在这里 - 假设你使用LINQ到对象。 如果你正在使用LINQ to SQL,那么显然你不能使用本地方法,我们将不得不重新寻找......

编辑:我仍然在你的问题非常不清楚。 如果你需要他们一模一样的日期/时间,很容易(撇开可能局部VS UTC的问题):

where dateTime1 == dateTime2

然而,提出为什么你在问题中提到的标题“分钟精密”或疑问体“用一分钟的时间精确度”的问题。



Answer 2:

怎么样

where (Math.Floor(datetime1.Ticks / 600000000) == Math.Floor(datetime2.Ticks / 600000000))



Answer 3:

感谢阿伦,将做到这一点(!还是搞清楚的过程中是如何工作的)这是指示答复我已经想出了最初的代码片段:

(Math.Abs​​(datetime1.Subtract(DATETIME2).TotalMinutes)== 0)

背景:在我的LINQ查询的WHERE子句(因此一个班轮),我需要检查,如果datetime1和DATETIME2是完全一样的。 正在审议的日期时间值是在查询中使用其他值邮票日期。



文章来源: Determine equality of Datetime values with minute precision within LINQ