7

分精度を使用して、2 つの日時値を比較して等価性 (まったく同じ) を判断する必要があります。これが最善の方法でしょうか? 私の日付には秒とミリ秒を含めることができますが、数分までしか考慮したくありません。

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

3 に答える 3

12

それをしないかどうかをチェックMath.Abs(diff.TotalMinutes) == 0します、いいえ-それはそれらが完全に同じであるかどうかをチェックします

それらが同じ分を持っているかどうか、またはそれらが1分未満離れているかどうかを確認しようとしていますか?最初に、以下を使用します。

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);
}

2つ目は、次を使用します。

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

ちなみに、1つがローカルで、もう1つがUTCである場合に、結果をどのようにするかを検討する必要があります...

ここではLINQ固有のものは何もないことに注意してください-LINQtoObjectsを使用していると仮定します。LINQ to SQLを使用している場合は、明らかにローカルメソッドを使用できないため、もう一度確認する必要があります...

編集:私はあなたの質問についてまだ非常に不明確です。それらを完全に同じ日付/時刻にする必要がある場合は、簡単です(ローカルとUTCの問題の可能性は別として)。

where dateTime1 == dateTime2

ただし、それでは、質問のタイトルに「分単位の精度」と記載されているのか、質問の本文に「分単位の精度まで使用している」と記載されているのかという疑問が生じます。

于 2009-08-10T18:39:34.123 に答える
0

どうですか

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

?

于 2009-08-10T18:35:49.560 に答える
0

ありがとう、アレン、そうします(プロセスがどのように機能するかを正確に理解しています!)ここに、私が最初に思いついた答えを示すコードスニペットがあります:

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

背景: linq クエリの WHERE 句 (したがってワンライナー) 内で、datetime1 と datetime2 がまったく同じかどうかを確認する必要があります。検討中の日時値は、クエリで使用される他の値のスタンプ日付です。

于 2009-08-12T13:53:35.447 に答える