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

C#のDateTime.Equals()メソッドとは?使い方とサンプルコードを解説

DateTime.Equals()メソッドとは

C#のDateTime.Equals()メソッドは、2つのDateTimeオブジェクト(インスタンス)が等しいかどうかを判定するための静的メソッドです。比較の結果、両者が同一の日時であればtrueを返し、異なる場合はfalseを返します。

このメソッドは、日時データの一致確認や条件分岐の処理などで頻繁に利用される基本的なメソッドの一つです。

構文

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

public static bool Equals (DateTime date1, DateTime date2);

パラメータ

  • date1:比較対象となる最初のDateTimeオブジェクト
  • date2:比較対象となる2つ目のDateTimeオブジェクト

戻り値

  • 2つの日時が等しい場合:true
  • 2つの日時が等しくない場合:false

サンプルコード1:AddMonths()で生成した日時との比較

まずは、元の日時に月を加算した新しいDateTimeオブジェクトと比較する例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTime d1 = new DateTime(2019, 09, 10, 5, 15, 25);
      DateTime d2 = d1.AddMonths(25);
      Console.WriteLine("Initial DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
      Console.WriteLine("\nNew DateTime (After adding months) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
      bool res = DateTime.Equals(d1, d2);
      if (res)
         Console.WriteLine("\ndate1 = date2. ");
      else
         Console.WriteLine("\ndate1 is not equal to date2. ");
   }
}

実行結果

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

Initial DateTime = 10 September 2019, 05:15:25
New DateTime (After adding months) = 10 October 2021, 05:15:25
date1 is not equal to date2.

この例では、d1に25ヶ月を加算したd2を作成しているため、両者は異なる日時となり、Equals()メソッドはfalseを返しています。

サンプルコード2:同じ値を持つ2つの日時の比較

次に、まったく同じ値を持つ2つのDateTimeオブジェクトを比較する例です。

using System;
public class Demo {
   public static void Main() {
      DateTime d1 = new DateTime(2019, 11, 11, 7, 15, 30);
      DateTime d2 = new DateTime(2019, 11, 11, 7, 15, 30);
      Console.WriteLine("DateTime1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
      Console.WriteLine("\nDateTime2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
      bool res = DateTime.Equals(d1, d2);
      if (res)
         Console.WriteLine("\ndate1 = date2 ");
      else
         Console.WriteLine("\ndate1 is not equal to date2 ");
   }
}

実行結果

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

DateTime1 = 10 September 2019, 05:15:25
DateTime2 = 10 September 2019, 05:15:25
date1 = date2

この例では、d1とd2がまったく同じ年月日・時刻で初期化されているため、Equals()メソッドはtrueを返しています。

補足:DateTime.Equals()を使う際のポイント

  • DateTime.Equals()は内部のTicks値(100ナノ秒単位の時刻値)に基づいて比較を行うため、ミリ秒以下の差異も判定対象になります。
  • Kindプロパティ(Local / Utc / Unspecified)の違いは比較に影響しません。タイムゾーンを考慮した比較が必要な場合は、事前にToUniversalTime()などで正規化してください。
  • 静的メソッドのほかに、インスタンスメソッド版のEquals(Object)==演算子でも同様の比較が可能です。
  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 には加算する時間数を指定します。負の値を渡すこ