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()メソッドと組み合わせることで、時間間隔の大小比較も柔軟に行えます。日付・時刻処理を実装する際に、ぜひ活用してみてください。
-
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()メソッドで減算
-
C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説
GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と