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

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

C#のDateTimeOffset.ToOffset()メソッドは、現在のDateTimeOffsetオブジェクトが保持する日時の値を、引数で指定したオフセット値に基づく日時に変換するためのメソッドです。このメソッドを使うことで、まったく同じ瞬間の時刻を、異なるタイムゾーン(UTCオフセット)の表現に変換できます。

構文

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

public DateTimeOffset ToOffset (TimeSpan val);

パラメータ「val」には、変換先となるオフセット値をTimeSpan型で指定します。戻り値として、指定されたオフセットに変換された新しいDateTimeOffsetオブジェクトが返されます。

使用例1:負のオフセットへの変換

それでは、DateTimeOffset.ToOffset()メソッドを使った具体的な実装例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 9, 10, 4, 20, 30, new TimeSpan(-5, 0, 0));
      Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
      DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(-10, 1, 0));
      Console.WriteLine("DateTimeOffset (updated) = {0}", res);
   }
}

出力結果

上記のプログラムを実行すると、次のような出力が得られます。

DateTimeOffset = 9/10/2019 4:20:30 AM -05:00
DateTimeOffset (updated) = 9/9/2019 11:21:30 PM -09:59

使用例2:正のオフセットへの変換

続いて、別の例でもDateTimeOffset.ToOffset()メソッドの動作を確認してみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 9, 10, 4, 20, 30, new TimeSpan(5, 0, 0));
      Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
      DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(3, 1, 0));
      Console.WriteLine("DateTimeOffset (updated) = {0}", res);
   }
}

出力結果

上記のプログラムを実行すると、次のような出力が得られます。

DateTimeOffset = 9/10/2019 4:20:30 AM +05:00
DateTimeOffset (updated) = 9/10/2019 2:21:30 AM +03:01

コードの解説

最初の例では、オフセット-05:00の日時「2019年9月10日 午前4:20:30」を、オフセット-09:59へと変換しています。その結果として「2019年9月9日 午後11:21:30 -09:59」が返されました。これは同じ瞬間を指す時刻ですが、オフセットが異なるため、表示される日付や時刻も変わる点に注目してください。

2つ目の例では、オフセット+05:00の日時を+03:01に変換しています。こちらも同様に、同一の時点を異なるオフセットで表現した結果となっています。このようにToOffset()メソッドを活用すれば、タイムゾーン間の時刻変換を簡単かつ正確に行うことができます。

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

    C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。0未満 − val1がval2より早い日時である場合0 − val1とval2が同一の日時である場合0より大きい − val1がval2より遅い日時である場合構文DateTimeOffset.Compare()メソッドの構文は以下の通りです。public static i

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

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