C#のDateTimeOffset.EqualsExact()メソッドの使い方を徹底解説
C#のDateTimeOffset.EqualsExact()メソッドは、現在のDateTimeOffsetオブジェクトが、指定されたDateTimeOffsetオブジェクトと同じ時刻を表しており、かつ同じオフセットを持っているかどうかを判定するために使用されます。
なお、EqualsExact()メソッドは「時刻」と「オフセット」の両方が完全に一致した場合にのみtrueを返します。これは、オフセットを考慮せずに時点そのものだけを比較するEquals()メソッドとは挙動が異なるため、用途に応じて使い分けることが重要です。
構文
構文は以下の通りです。
public bool EqualsExact (DateTimeOffset val);
ここで、valは比較対象となるDateTimeOffsetオブジェクトです。戻り値はbool型で、両者が完全に一致する場合はtrue、そうでない場合はfalseが返されます。
例1:同一の時刻とオフセットを比較する場合
それでは、DateTimeOffset.EqualsExact()メソッドを使用した具体例を見てみましょう。
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
bool res = dateTimeOffset1.EqualsExact(dateTimeOffset2);
if (res) {
Console.Write("DateTimeOffset1 = DateTimeOffset2");
} else {
Console.Write("DateTimeOffset1とDateTimeOffset2は異なります");
}
}
}出力
このプログラムを実行すると、次の出力が得られます。
DateTimeOffset1 = 11/9/2019 5:30:10 AM -05:00 DateTimeOffset2 = 11/9/2019 5:30:10 AM -05:00 DateTimeOffset1 = DateTimeOffset2
この例では、2つのDateTimeOffsetオブジェクトが同じ日付・時刻・オフセット(-05:00)を持っているため、EqualsExact()メソッドはtrueを返します。
例2:異なる時刻を比較する場合
続いて、異なる値を持つDateTimeOffsetオブジェクト同士を比較した場合の動作を確認してみます。
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 09, 9, 20, 20, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
bool res = dateTimeOffset1.EqualsExact(dateTimeOffset2);
if (res) {
Console.Write("DateTimeOffset1 = DateTimeOffset2");
} else {
Console.Write("DateTimeOffset1とDateTimeOffset2は異なります");
}
}
}出力
このプログラムを実行すると、次の出力が得られます。
DateTimeOffset1 = 9/9/2019 5:30:10 AM -05:00 DateTimeOffset2 = 11/9/2019 9:20:20 AM -05:00 DateTimeOffset1とDateTimeOffset2は異なります
このように、日付や時刻が異なる場合は、たとえオフセットが同じであっても、EqualsExact()メソッドはfalseを返します。厳密な時刻比較が必要な場面では、本メソッドが非常に役立ちます。
-
C#のDateTimeOffset.Compare()メソッドの使い方をわかりやすく解説
C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。0未満 − val1がval2より早い日時である場合0 − val1とval2が同一の日時である場合0より大きい − val1がval2より遅い日時である場合構文DateTimeOffset.Compare()メソッドの構文は以下の通りです。public static i
-
【C#入門】DateTimeOffset.AddYears()メソッドの使い方を徹底解説
C#のDateTimeOffset.AddYears()メソッドは、現在のDateTimeOffsetインスタンスが表す日時に、指定した年数を加算した新しいDateTimeOffset値を返すメソッドです。元のインスタンスの値は変更されず、計算結果が新しいオブジェクトとして返される点に注意してください。構文AddYears()メソッドの構文は以下のとおりです。public DateTimeOffset AddYears (int val);引数valには、加算する年数を整数で指定します。負の値を指定すると、年数を減算(過去にさかのぼる)ことができます。主な特徴戻り値は新しいDateTimeOf