我需要使用分钟精度比较两个日期时间值以确定相等(完全相同)。这是最好的方法吗?我的日期可能有秒和毫秒,但我只想考虑到分钟。

       where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)
有帮助吗?

解决方案

检查是否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

但是,提出为什么你提到的“分精准”的问题,标题或问题,“用一分钟的时间精确度”的问题身上。

其他提示

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

谢谢艾伦,会这样做(仍然弄清楚这个过程是如何工作的!)。这是代码片段,表明我最初提出的答案:

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

背景:在我的 linq 查询的 WHERE 子句(因此是单行)中,我需要检查 datetime1 和 datetime2 是否完全相同。所考虑的日期时间值是查询中使用的其他值的时间戳日期。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top