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