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

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

DateTimeOffset.AddTicks()メソッドとは

C#のDateTimeOffset.AddTicks()メソッドは、現在のインスタンスが持つ日時の値に、指定したティック(ticks)数を加算するためのメソッドです。ティックは100ナノ秒を1単位とする非常に細かい時間間隔であり、高精度な日時計算が必要な場面で活用されます。

構文

AddTicks()メソッドの構文は以下のとおりです。

public DateTimeOffset AddTicks (long val);

引数valには加算するティック数を指定します。負の値を渡すことで、日時からティックを減算することも可能です。

主な時間間隔とティック数の一覧

参考として、代表的な時間間隔に対応するティック数を以下の表にまとめました。

時間間隔ティック数
1秒10,000,000
1分600,000,000
1時間36,000,000,000
1日864,000,000,000
1週間6,048,000,000,000
1か月その月の日数によって異なる
平年(1年)315,360,000,000,000
うるう年(1年)316,224,000,000,000

サンプルコード:ティックを加算する例

まずは、DateTimeOffset.AddTicks()メソッドを使ってティックを加算する基本的な例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
      Console.WriteLine("DateTimeOffset (before adding ticks) = {0}", dateTimeOffset);
      // 3秒 = 30,000,000ティック
      DateTimeOffset res = dateTimeOffset.AddTicks(30000000);
      Console.WriteLine("DateTimeOffset (after adding ticks) = {0}", res);
   }
}

実行結果

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

DateTimeOffset (before adding ticks) = 11/11/2019 8:20:10 AM -05:00
DateTimeOffset (after adding ticks) = 11/11/2019 8:20:13 AM -05:00

この例では、30,000,000ティック(=3秒)を加算しているため、時刻が8:20:10から8:20:13に更新されています。

サンプルコード:ティックを減算する例

次に、負の値を指定してティックを減算する例を紹介します。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
      Console.WriteLine("DateTimeOffset (before subtracting ticks) = {0}", dateTimeOffset);
      // 2秒 = 20,000,000ティック
      DateTimeOffset res = dateTimeOffset.AddTicks(-20000000);
      Console.WriteLine("DateTimeOffset (after subtracting ticks) = {0}", res);
   }
}

実行結果

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

DateTimeOffset (before subtracting ticks) = 11/11/2019 8:20:10 AM -05:00
DateTimeOffset (after subtracting ticks) = 11/11/2019 8:20:08 AM -05:00

この例では、-20,000,000ティック(=-2秒)を指定しているため、時刻が8:20:10から8:20:08へと減算されています。

まとめ

DateTimeOffset.AddTicks()メソッドを使えば、100ナノ秒単位という高精度で日時の加減算を行うことができます。正の値で加算、負の値で減算というシンプルな仕様なので、ミリ秒以下の精度が求められるタイムスタンプ処理などにぜひ活用してください。

  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