11

しばらく前から答えを探していましたが、実際にはどこにも見つかりませんでした。

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

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

4

6 に答える 6

21

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

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

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

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

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

于 2012-12-02T11:53:17.870 に答える
17

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)
于 2012-12-02T11:52:58.493 に答える
2

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

  • ネガティブ
  • ポジティブ

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

于 2012-12-02T11:50:48.597 に答える
0

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

于 2012-12-02T11:51:00.277 に答える
0

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

于 2012-12-02T11:51:18.997 に答える
0

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;

}

于 2018-04-04T18:21:18.213 に答える