C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のTimeSpan.Compare()メソッドの使い方を徹底解説

C#のTimeSpan.Compare()メソッドは、2つのTimeSpan値(時間間隔)を比較し、その結果を整数値で返す静的メソッドです。戻り値によって、最初の時間間隔が2番目より短いのか、等しいのか、長いのかを判定できます。

戻り値の意味

  • -1:span1がspan2より短い場合
  • 0:span1とspan2が等しい場合
  • 1:span1がspan2より長い場合

構文

TimeSpan.Compare()メソッドの構文は以下のとおりです。

public static int Compare(TimeSpan span1, TimeSpan span2);

パラメータの意味は次の通りです。

  • span1:比較対象となる1つ目の時間間隔
  • span2:比較対象となる2つ目の時間間隔

使用例1

実際のコード例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        TimeSpan span1 = new TimeSpan(-6, 25, 0);
        TimeSpan span2 = new TimeSpan(1, 11, 25, 20);
        TimeSpan span3 = TimeSpan.MinValue;
        TimeSpan res1 = span1.Add(span2);
        TimeSpan res2 = span2.Add(span3);
        Console.WriteLine("Final Timespan (TimeSpan1 + TimeSpan2) = " + res1);
        Console.WriteLine("Final Timespan (TimeSpan2 + TimeSpan3) = " + res2);
        Console.WriteLine("Result (Comparison of span1 and span2) = " + TimeSpan.Compare(span1, span2));
    }
}

実行結果

Final Timespan (TimeSpan1 + TimeSpan2) = 1.05:50:20
Final Timespan (TimeSpan2 + TimeSpan3) = -10675197.15:22:45.4775808
Result (Comparison of span1 and span2) = -1

この例では、span1(-6時間25分)はspan2(1日11時間25分20秒)よりも短いため、Compare()メソッドは-1を返しています。また、TimeSpan.MinValueとの加算により、TimeSpanが保持できる最小値が出力されている点にも注目してください。

使用例2

もう一つシンプルな例を確認しましょう。

using System;
public class Demo {
    public static void Main(){
        TimeSpan span1 = new TimeSpan(-6, 25, 0);
        TimeSpan span2 = new TimeSpan(1, 10, 0);
        Console.WriteLine("Result (Comparison of span1 and span2) = " + TimeSpan.Compare(span1, span2));
    }
}

実行結果

Result (Comparison of span1 and span2) = -1

負の時間間隔であるspan1は、正の時間間隔であるspan2より明らかに短いため、結果は-1となります。

まとめ

TimeSpan.Compare()メソッドを使えば、2つの時間間隔の大小関係を簡単に数値で判定できます。条件分岐と組み合わせれば、「期限までの残り時間の比較」や「処理時間の計測」など、時間に関するさまざまなロジックを実装する際に役立ちます。なお、インスタンスメソッドとして使えるCompareTo()メソッドも同様の機能を持っているので、用途に応じて使い分けるとよいでしょう。

  1. C#でTimeSpanをhh:mm:ss形式にフォーマットする方法

    C#では、TimeSpan構造体の値を「hh:mm:ss」形式で簡単にフォーマットして表示することができます。カスタム書式指定子を使えば、時間・分・秒を自由な形式で出力可能です。 TimeSpanの設定 まず、フォーマット対象となるTimeSpanオブジェクトを作成します。 TimeSpan ts = new TimeSpan(9, 15, 30); この例では、9時間15分30秒を表すTimeSpanを作成しています。 TimeSpanをフォーマットするには TimeSpanを「hh:mm:ss」形式でフォーマットするには、次のような書式指定文字列を使用します。 {0:hh\:mm\:ss

  2. C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説

    GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と