Datetime.CompareTo()メソッドを使用して、Datetime変数を設定したDatetime変数と比較しようとしています。私はタイマーを使ってこれらを毎秒比較して結果を表示しますが、現在の時間が設定した時間に近づくにつれて、結果は1から-1に変わりますが、決して0ではないことを意味します。 Datetime構造にミリ秒が含まれていると思われますか?2つの日時変数はいつ等しいですか?
答えて
...これを試してみてください(もちろん、試験日を変更します)。
最も簡単な方法は、DateTimeを取得し、DateTime.Nowを減算することです。その後、TimeSpanになります。 TimeSpanのTotalSecondsプロパティが0の場合、その差は1秒未満です。
あなたは正しく疑わしいです。しかし、それはミリ秒よりも長くなる。最大解像度は"tick"で、100ナノ秒に相当します。
あなたの疑惑は正しいですか? DateTime構造最小単位は、012nsであり、単位は100nsです。
あなたがしたいことは、秒に等しいものがすべて等しいかどうかを確認してから、まずDateプロパティを比較し、次に時、分、秒のプロパティを比較して確認できます。個別に
秒と比較するより正確です。シナリオでは、「エラー範囲」を定義することができます。 2つの間の隙間が1秒未満の場合は、(プログラム内で)同じとみなされます。
は、他のは、ここで述べたように、解像度が100nsのある
DateTime d1 = new DateTime(2011, 12, 27, 4, 37, 17);
DateTime d2 = DateTime.Now;
if (d1.Subtract(d2).Seconds <= 1)
{
//consider these DateTimes equal... continue
}
違いが同様に正確に1分、1時間などの場合は実際には、秒は0になります。 TotalSecondsを使用する必要があります。 –
うわー!良いキャッチ。 – Flipster
私は正確な値ではなく、正確な値ではなく値の範囲でDatetime(とdouble)を比較することをお勧めします。
DateTime d1 = new DateTime(2011, 12, 27, 4, 37, 17);
DateTime d2 = DateTime.Now;
if ((d2 >= d1) && (d2 <= d1.AddMinutes(1)))
....
'simulate comparison of two datetimes
d1 = DateTime.Now
Threading.Thread.Sleep(250)
d2 = DateTime.Now
'see if two dates are within a second of each other
Dim ts As Double = ((d2 - d1).TotalSeconds)
If ts < 1 Then
'equal
Debug.WriteLine("EQ " & ts.ToString("n4"))
Else
Debug.WriteLine("neq " & ts.ToString("n4"))
End If
- 1. phpクラスの変数で1つの等しい第2変数?
- 2. 等しい値の2つの文字列変数が等価でない(アンドロイド)
- 3. 2つの日時変数を1つにまとめる
- 4. C#で2つの列挙型が等しいのはいつですか?
- 5. php - sql select "where"はいくつかの変数に等しい?
- 6. が、私は時間と日付を持つ2つの変数持つルビー
- 7. 2つの変数(Python)で2つの不等式のいずれかを見つける
- 8. PHPは2つの等しい数が等しくないと見つけませんか?バグ?
- 9. Pythonの日で2つの日時フィールドの違いを取得
- 10. 2つのJavascript変数を常に等しくするにはどうすればいいですか?
- 11. 2つの日時のチケット
- 12. 2つのテーブルが等しくない
- 13. 変数の値を特定するとき、2つの等号をいつ使用するのですか?
- 14. MySQLの私は、時間との二つの日付を比較したい2つの日時フィールド
- 15. SQLは2つの列に等しく、1つは等しく、もう一方は等しくない
- 16. 2つの乱数が等しいときの「if」ステートメント
- 17. SQLite SELECTが2つの値のいずれかに等しい
- 18. javascriptの2つの日付の間の時間の違いは?
- 19. なぜこれらの2つの日付はjavascriptで等しくないのですか?
- 20. Riddle:3つの等しい日付が等しくない場合
- 21. 2つのテンソルフロー変数名の違いは何ですか?
- 22. 2つのデータフレームを2つの列で等しくない行数でマージする
- 23. Linqで2つの日付が等しいかどうかを調べる優雅な解決方法(2番目の日付はパラメータではない)
- 24. クラス内の2つの変数が等しいかどうかをチェックする方法は?
- 25. 2つの* .txtファイルで等しい名前を見つけるにはどうすればよいですか?
- 26. 2つのJSON間で等しいキーを削除します
- 27. 等しい2つの配列イメージを見つける
- 28. Eigenで2つのテンソルが等しいかどうか比較するには?
- 29. STLマルチセットで2つの等しい要素の順序を変更する
- 30. 2つの日付の間の日数を探しますか?
TimeSpan.TotalSecondsはdoubleなので、== 0ではなく1.0未満をチェックする必要があります。 – Holstebroe
DateTime構造体は* 100 *に正確ですが、 "Now"プロパティは実際には*正確* 64分の1秒。タイマーの精度*は、その精度*を反映する必要はありません。 –
@エリック - あなたの洞察に感謝します。私はこれを認識しませんでしたが、Stopwatchクラスについて学ぶ前に、いくつかのタイミング問題を説明します。ちなみに、なぜNowプロパティは最初の場所でストップウォッチより精度が低く作られていますか? –