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

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

C#のTimeSpan.Subtract()メソッドは、指定したTimeSpanオブジェクトと現在のインスタンスとの差分(減算結果)を表す、新しいTimeSpanオブジェクトを返すためのメソッドです。日付や時刻の計算を行う際に非常に便利な機能です。

構文

Subtract()メソッドの構文は以下の通りです。

public TimeSpan Subtract (TimeSpan span);

引数「span」には、差し引く対象となる時間間隔(TimeSpan)を指定します。このメソッドは、現在のインスタンスから引数の値を減算した結果を新しいTimeSpanオブジェクトとして返します。元のオブジェクト自体は変更されない点に注意してください。

サンプルコード1:基本的な使用例

まずは基本的な使用例を見てみましょう。この例では、Ticksや時間・ミリ秒・分など、さまざまな単位からTimeSpanオブジェクトを生成し、Compare()メソッドによる比較結果と、Subtract()メソッドによる減算結果を出力しています。

using System;
public class Demo {
   public static void Main(){
      TimeSpan span1 = TimeSpan.FromTicks(1);
      TimeSpan span2 = new TimeSpan(1);
      TimeSpan span3 = TimeSpan.FromHours(1);
      TimeSpan span4 = TimeSpan.FromMilliseconds(1);
      TimeSpan span5 = TimeSpan.FromMinutes(1);
      TimeSpan span6 = TimeSpan.FromMinutes(1);
      Console.WriteLine("TimeSpan1 = "+span1);
      Console.WriteLine("TimeSpan2 = "+span2);
      Console.WriteLine("TimeSpan3 = "+span3);
      Console.WriteLine("TimeSpan4 = "+span4);
      Console.WriteLine("TimeSpan5 = "+span5);
      Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
      Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
      Console.WriteLine("Result (Comparison of span1 and span3) = "+TimeSpan.Compare(span1, span3));
      Console.WriteLine("Result (Comparison of span3 and span4) = "+TimeSpan.Compare(span3, span4));
      Console.WriteLine("Result (Comparison of span4 and span5) = "+TimeSpan.Compare(span4, span5));
      TimeSpan res1 = span1.Subtract(span2);
      TimeSpan res2 = span2.Subtract(span2);
      Console.WriteLine("Result = "+res1);
      Console.WriteLine("Result = "+res2);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

TimeSpan1 = 00:00:00.0000001
TimeSpan2 = 00:00:00.0000001
TimeSpan3 = 01:00:00
TimeSpan4 = 00:00:00.0010000
TimeSpan5 = 00:01:00
Result (Comparison of span1 and span2) = 0
Result (Comparison of span2 and span3) = -1
Result (Comparison of span1 and span3) = -1
Result (Comparison of span3 and span4) = 1
Result (Comparison of span4 and span5) = -1
Result = 00:00:00
Result = 00:00:00

サンプルコード2:異なる値での減算例

続いて、別の例を見てみましょう。この例では、より大きな値を持つTimeSpan同士の比較と減算を行っています。

using System;
public class Demo {
   public static void Main(){
      TimeSpan span1 = TimeSpan.FromTicks(1500);
      TimeSpan span2 = new TimeSpan(2, 40, 55);
      TimeSpan span3 = TimeSpan.FromHours(5);
      TimeSpan span4 = TimeSpan.FromMilliseconds(1000);
      TimeSpan span5 = TimeSpan.FromMinutes(50);
      TimeSpan span6 = TimeSpan.FromMinutes(50);
      Console.WriteLine("TimeSpan1 = "+span1);
      Console.WriteLine("TimeSpan2 = "+span2);
      Console.WriteLine("TimeSpan3 = "+span3);
      Console.WriteLine("TimeSpan4 = "+span4);
      Console.WriteLine("TimeSpan5 = "+span5);
      Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
      Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
      Console.WriteLine("Result (Comparison of span1 and span3) = "+TimeSpan.Compare(span1, span3));
      Console.WriteLine("Result (Comparison of span3 and span4) = "+TimeSpan.Compare(span3, span4));
      Console.WriteLine("Result (Comparison of span4 and span5) = "+TimeSpan.Compare(span4, span5));
      TimeSpan res1 = span1.Subtract(span2);
      TimeSpan res2 = span2.Subtract(span2);
      Console.WriteLine("Result = "+res1);
      Console.WriteLine("Result = "+res2);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

TimeSpan1 = 00:00:00.0001500
TimeSpan2 = 02:40:55
TimeSpan3 = 05:00:00
TimeSpan4 = 00:00:01
TimeSpan5 = 00:50:00
Result (Comparison of span1 and span2) = -1
Result (Comparison of span2 and span3) = -1
Result (Comparison of span1 and span3) = -1
Result (Comparison of span3 and span4) = 1
Result (Comparison of span4 and span5) = -1
Result = -02:40:54.9998500
Result = 00:00:00

まとめ

TimeSpan.Subtract()メソッドを使うことで、2つの時間間隔の差分を簡単に求めることができます。小さな値同士の減算では「00:00:00」になる一方、大きな値から小さな値を引いた場合は負の値(例:「-02:40:54.9998500」)が返されることも確認できました。また、TimeSpan.Compare()メソッドと組み合わせることで、時間間隔の大小比較も柔軟に行えます。日付・時刻処理を実装する際に、ぜひ活用してみてください。

  1. C#で2つのTimeSpanを減算する方法(Subtractメソッドの使い方)

    C#では、TimeSpan構造体を使って時間間隔を表現できます。2つのTimeSpanの差(減算結果)を求めるには、Subtract()メソッドを使用します。本記事では、具体的なコード例とともにその使い方を解説します。2つのTimeSpanを設定するまず、減算対象となる2つのTimeSpanを用意します。ここでは、FromMinutes()メソッドを使用して、それぞれ2分と1分のTimeSpanを作成します。TimeSpan t1 = TimeSpan.FromMinutes(2); TimeSpan t2 = TimeSpan.FromMinutes(1);Subtract()メソッドで減算

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

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