c# - 在 LINQ 中以分钟精度确定 Datetime 值的相等性

标签 c# datetime precision equality

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

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

最佳答案

检查 Math.Abs​​(diff.TotalMinutes) == 0 不会这样做,不 - 那是检查它们是否完全相同。 p>

您是要检查它们是否在同一分钟内,还是相隔不到一分钟?首先,使用:

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 to Objects。如果您正在使用 LINQ to SQL,那么显然您不能使用本地方法,我们将不得不再次查看...

编辑:我对你的问题仍然很不清楚。如果您需要它们完全相同的日期/时间,这很容易(撇开可能的本地与 UTC 问题):

where dateTime1 == dateTime2

但是,这引出了一个问题,即为什么您在问题标题中提到“分钟精度”或在问题正文中提到“使用最多一分钟精度”。

关于c# - 在 LINQ 中以分钟精度确定 Datetime 值的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256460/

相关文章:

c# - 登录 session 未使用 WebRequest/Response 转移到新网页?

c# - 将内存流写入文件

c# - 这到底有多慢? INotifyPropertyChanged 使用 StackTrace

c# - InvalidCastException : Unable to cast object of type 'System.TimeSpan' to type 'System.Nullable` 1[System. 日期时间]'

java - Double 代替 Float 和 Float 舍入

c# - Razor 循环项的索引

sql - 如何选择处于时间戳之间状态的记录?数据库

python - 根据时间条件获取每个组的最大值

javascript - JavaScript 中是否有一种可靠的方法来获取任意数字的小数位数?

math - float 学有问题吗?