web-dev-qa-db-ja.com

DateTime.CompareToは実際にどの整数を返しますか?

私はしばらくの間答えを探していましたが、実際にはどこにもそれを見つけることができませんでした。

私は特に このページ を見ていました。そこでは、CompareToメソッドが、それが早いか、同じか、遅いかを示す整数を返すと書かれています。私はそれの使用法を理解しており、以前は整数が負であり、同じ場合は0などであることを理解しています。

しかし、この整数は何ですか?差は秒、ミリ秒、ティックで返されますか、それともまったく返されませんか?私はあなたがこれで私を助けてくれることを願っています、そして誰かがこの質問で別の投稿を見つけることができたら、私に教えてください。このトピックに関する質問がすぐに見つからなかったことに正直驚いています...

11
phil13131

ドキュメントは、実際にはIComparableインターフェイスページ(DateTimeが実装)にあります: http://msdn.Microsoft.com/en-us /library/system.icomparable.aspx

CompareTo(Object)メソッドの実装は、次の表に示すように、3つの値のいずれかを持つInt32を返す必要があります。

ゼロ未満:現在のインスタンスは、CompareToメソッドで指定されたオブジェクトの前にソート順であります。

ゼロ:この現在のインスタンスは、CompareToメソッドで指定されたオブジェクトと同じソート順の位置にあります。

ゼロより大きい:この現在のインスタンスは、CompareToメソッドで指定されたオブジェクトにソート順で続きます。

21
kabaros

MSDNによると、何も指定されていません。

if (result < 0)
   relationship = "is earlier than";
else if (result == 0)
   relationship = "is the same time as";         
else
   relationship = "is later than";

2つのDateTime間の日数を比較する場合は、次のようなものを探す必要があります。

if ((expiryDate - DateTime.Now).Days < 30)
17
RvdK

これは実装の詳細であり、知る必要はなく、いつでも変更できます。唯一の3つのカテゴリは次のとおりです。

  • ゼロ
  • ポジティブ

それ以上のものを使用していることに気付いた場合は、何かがおかしいです。

2
Marc Gravell

TimeSpanと比較する特定の単位を選択できます

_DateTime local_time = DateTime.Now; //current time_

DateTime remote_time = DateTime.Now.AddMinutes(-2); //two minutes delayed

TimeSpan time_difference = (local_time - remote_time);

if (time_difference.Minutes <= 5) //compare specific units desired

_{_

_bool within_tollerance = true;_

_}_

0
John

私が知る限り、その数は常に-1、0、または1です。

0
Rotem

IComparable.CompareTo の実装です。これは、等しい場合は0、大きい場合は正の整数、小さい場合は負の整数を返すことを意味します。

0
Euphoric