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

C#のDateTimeOffset.Compare()メソッドの使い方をわかりやすく解説

C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。

このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。

  • 0未満 − val1がval2より早い日時である場合
  • 0 − val1とval2が同一の日時である場合
  • 0より大きい − val1がval2より遅い日時である場合

構文

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

public static int Compare (DateTimeOffset val1, DateTimeOffset val2);

引数のval1には比較対象となる1つ目のDateTimeOffsetオブジェクトを、val2には2つ目のDateTimeOffsetオブジェクトを指定します。

使用例1:異なる日時を比較する場合

まずは、異なる日時を持つ2つのDateTimeOffsetオブジェクトを比較する例を見てみましょう。

using System;
public class Demo {
    public static void Main() {
        DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
        DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 10, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
        Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
        Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
        int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
        // DateTimeOffset1がDateTimeOffset2より早いため、0未満の値が返される
        Console.WriteLine(res);
    }
}

出力結果

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

DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00
DateTimeOffset2 = 10/9/2019 8:20:10 AM -05:00
-1

この例では、dateTimeOffset1(2019年9月9日)がdateTimeOffset2(2019年10月9日)より早い日時のため、戻り値として-1が返されています。

使用例2:同じ日時を比較する場合

続いて、まったく同じ日時を持つ2つのDateTimeOffsetオブジェクトを比較した場合の動作を確認してみましょう。

using System;
public class Demo {
    public static void Main() {
        DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
        DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
        Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
        Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
        int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
        // DateTimeOffset1とDateTimeOffset2が等しいため、0が返される
        Console.WriteLine(res);
    }
}

出力結果

このコードを実行すると、以下の出力が得られます。

DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00
DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00
0

両方のオブジェクトが同一の日時・オフセットを持っているため、戻り値は0となりました。

まとめ

DateTimeOffset.Compare()メソッドを使えば、タイムゾーンオフセット情報を含む日時同士を簡単に比較できます。戻り値の符号(負・ゼロ・正)を見ることで、どちらの日時が前後しているのかを直感的に判断できるため、日付処理を行うアプリケーションで非常に便利です。

  1. C#のDateTimeOffset.FromFileTime()メソッドの使い方を徹底解説

    C#のDateTimeOffset.FromFileTime()メソッドは、指定されたWindowsファイル時刻を、それと等価なローカル時刻(DateTimeOffset型)に変換するための静的メソッドです。なお、Windowsファイル時刻とは、1601年1月1日午前0時(UTC)を起点とした経過時間を、100ナノ秒単位(タイマーティック)で表現した値のことです。Windows OSが内部的にファイルの作成日時や更新日時などを管理する際に使用されている形式です。構文このメソッドの構文は以下の通りです。public static DateTimeOffset FromFileTime (long

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

    C#のDateTimeOffset.AddYears()メソッドは、現在のDateTimeOffsetインスタンスが表す日時に、指定した年数を加算した新しいDateTimeOffset値を返すメソッドです。元のインスタンスの値は変更されず、計算結果が新しいオブジェクトとして返される点に注意してください。構文AddYears()メソッドの構文は以下のとおりです。public DateTimeOffset AddYears (int val);引数valには、加算する年数を整数で指定します。負の値を指定すると、年数を減算(過去にさかのぼる)ことができます。主な特徴戻り値は新しいDateTimeOf