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

【C#入門】DateTime.Subtract()メソッドの使い方を徹底解説

C#のDateTime.Subtract()メソッドは、指定したDateTime(日時)またはTimeSpan(時間間隔)を減算するために使用されるメソッドです。2つの日時の差を計算したい場合や、特定の日時から一定の期間を引き算したい場合に活用できます。

DateTime.Subtract()メソッドの構文

DateTime.Subtract()メソッドには、以下の2つのオーバーロードが用意されています。

public TimeSpan Subtract (DateTime value);
public DateTime Subtract (TimeSpan value);
  • DateTime型を引数に渡す場合:2つの日時の差がTimeSpanとして返されます。
  • TimeSpan型を引数に渡す場合:元の日時から時間間隔を減算した新しいDateTimeが返されます。

例1:DateTime同士の差を求める

まず、2つのDateTimeオブジェクトの差を計算する例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTime d1 = new DateTime(2019, 10, 10, 8, 10, 40);
      DateTime d2 = new DateTime(2017, 11, 06, 8, 10, 40);
      Console.WriteLine("Date 1 = "+d1);
      Console.WriteLine("Date 2 = "+d2);
      TimeSpan res = d1.Subtract(d2);
      Console.WriteLine("TimeSpan between two dates = {0} ",res);
   }
}

実行結果

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

Date 1 = 10/10/2019 8:10:40 AM
Date 2 = 11/6/2017 8:10:40 AM
TimeSpan between two dates = 703.00:00:00

この例では、d1(2019年10月10日)からd2(2017年11月6日)を減算しており、その結果として「703日」を表すTimeSpanが返されています。

例2:DateTimeからTimeSpanを減算する

次に、DateTimeからTimeSpanを減算して新しい日時を取得する例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 10, 10, 8, 10, 40);
      TimeSpan t = new TimeSpan(1, 10, 10, 12);
      Console.WriteLine("Date = "+d);
      DateTime res = d.Subtract(t);
      Console.WriteLine("DateTime between date d and timespan t = {0} ",res);
   }
}

実行結果

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

Date = 10/10/2019 8:10:40 AM
DateTime between date d and timespan t = 10/8/2019 10:00:28 PM

この例では、日時d(2019年10月10日 8:10:40)から「1日10時間10分12秒」のTimeSpanを減算しています。その結果、「2019年10月8日 22:00:28」という新しいDateTimeが返されました。

まとめ

DateTime.Subtract()メソッドを使うことで、日時同士の差分計算や、日時からの期間減算を簡単に行うことができます。引数にDateTimeを渡せば差分がTimeSpanで取得でき、TimeSpanを渡せば減算後の日時がDateTimeで取得できるという使い分けを覚えておきましょう。

  1. C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説

    C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、

  2. C#のDateTime.AddHours()メソッドの使い方を徹底解説

    C#のDateTime.AddHours()メソッドは、指定した時間数を現在のDateTimeインスタンスの値に加算するためのメソッドです。重要なポイントとして、このメソッドは元のDateTimeオブジェクトを変更せず、計算結果を含む新しいDateTimeオブジェクトを返します。基本仕様DateTimeは不変(イミュータブル)な構造体のため、AddHours()を呼び出しても元の値は変わりません。戻り値は加算後の日時を持つ新しいDateTimeです。構文public DateTime AddHours (double hrs);パラメータ hrs には加算する時間数を指定します。負の値を渡すこ