2016-10-06 9 views
2

私は理解しようとしている1つの奇妙な問題があります。 私のコントローラには、比較したい2つのDateTimeオブジェクトがあります。C#2 DateTimeが等しくない

私のコントローラのデバッガからスクリーンショットを見ることができます。私は1つの日付時間を作成し、モデルから別の日付を取得します。あなたは日付1は、私はあなたが説明DATE2から2秒を削除し、日付1

debugger 2

ケイとそれを比較する次のステップ2秒 debuger - step 1

ためdate2のとは異なり、デバッガで見ることができる。この工程では なぜ私はそれが偽ですか?デバッガでは、私はそれらの両方が同じであると見ます。

enter image description here

ソリューション:それはコメントで言われたとおり、アイデアもミリ秒をチェックすることでした、私は完全に忘れてしまいました!

+10

ミリ秒を確認してください – Alex

+7

両方の日付のティック値を比較するのはどうですか? –

+4

さて、彼らは秒まで同じであることが分かります。 'model.Available.MinDate'の* exact *値はわかりません。実際には2016-07-18T18:45:00.001かそのようなものかもしれません。 –

答えて

4

the reference sourceに示すように、2つのDateTimeオブジェクトの比較は、内部表現であるそれぞれのティックによって行われます。

2つのDateTime値を比較するのは、2つの浮動小数点値を比較するのと少し似ています。違いが小さいため、望みのものが得られない可能性があります。おそらく、同じ日付になっているのか、ある特定の範囲にあるのかをチェックする必要があります。

+0

元のソースコードを参照する場合+1 –

0

DateTime.Compareを使用して、どの時刻が早いか遅いかを確認できます。同じように、人々はすでに差異があると言いました。ミリ秒

はDateTime.Compareを使用する方法: https://msdn.microsoft.com/en-us/library/system.datetime.compare(v=vs.110).aspx

+0

既存の回答を参照しても問題ありませんが、このような問題や類似の問題に対して人々があなたの提案をどのように使用するかについてのいくつかの追加情報を提供した方が役に立ちます。 'DateTime.Compare'自体は本当にその質問に対する答えではありません。例えば、「DateTime.Compare」の出力からどのように伝えたらいいですか? –

0

Datetimeとを比較する方法は、そのティックプロパティを比較することによって行われる。

bool r = date1.Ticks == date2.Ticks; 

はこれを試してみてください。

関連する問題