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

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

DateTime.FromBinary()メソッドとは

C#のDateTime.FromBinary()メソッドは、64ビットのバイナリ値を逆シリアル化(デシリアライズ)し、シリアル化されていた元のDateTimeオブジェクトを復元するために使用されます。通常は、DateTimeオブジェクトを64ビット値に変換するToBinary()メソッドと組み合わせて利用されます。

構文

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

public static DateTime FromBinary(long val);

パラメータ「val」には、Kindプロパティが2ビットフィールドに、Ticksプロパティが62ビットフィールドにエンコードされた64ビット符号付き整数を指定します。

使用例1:ToBinary()との組み合わせによる復元

まず、ToBinary()メソッドでシリアル化したDateTimeオブジェクトを、FromBinary()メソッドで復元する基本的な例を見てみましょう。

using System;

public class Demo {
   public static void Main() {
      DateTime d1 = new DateTime(2019, 11, 10, 6, 20, 45);
      long val = d1.ToBinary();
      DateTime d2 = DateTime.FromBinary(val);
      System.Console.WriteLine("初期のDateTime = {0:y} {0:dd}", d1);
      System.Console.WriteLine("\n復元後のDateTime = {0:y} {0:dd}", d2);
   }
}

出力結果

初期のDateTime = November 2019 10
復元後のDateTime = November 2019 10

この例では、2019年11月10日のDateTimeオブジェクトをToBinary()メソッドで64ビットのバイナリ値に変換し、その後FromBinary()メソッドで元の状態に復元しています。出力結果から、日付情報が正確に保持されていることが確認できます。

使用例2:任意の数値を直接指定する場合

次に、任意の数値を直接引数として渡してFromBinary()メソッドを実行する例です。

using System;

public class Demo {
   public static void Main() {
      DateTime d1 = DateTime.FromBinary(100000);
      System.Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss}", d1);
   }
}

出力結果

DateTime = 01 January 0001, 12:00:00

この例では、非常に小さな値「100000」を指定しているため、DateTimeの最小値である西暦1年1月1日に近い日時が生成されます。Ticksの値が極めて小さいため、ほぼ最小の日時として解釈されていることがわかります。

注意点

引数に指定できるのは、DateTime.MinValue.Ticks以上、DateTime.MaxValue.Ticks以下の64ビット符号付き整数です。この範囲外の値を渡すとArgumentExceptionが発生します。また、KindプロパティがLocalの場合は、UTCからローカル時刻への調整が自動的に行われる点にも留意してください。外部から取得したバイナリ値を扱う際は、事前に値の検証を行うことが推奨されます。

  1. C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法

    C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動

  2. C#のDateTime.Add()メソッドとは?構文と使い方を実例付きで解説

    C#のDateTime.Add()メソッドは、指定したTimeSpanの値を現在のDateTimeインスタンスに加算し、その結果として新しいDateTimeオブジェクトを返すメソッドです。元のインスタンス自体は変更されず、計算結果が新しいオブジェクトとして生成される点が特徴です。基本構文DateTime.Add()メソッドの構文は以下の通りです。public DateTime Add (TimeSpan val);引数 val には、加算する時間間隔を表す TimeSpan を指定します。正の値を渡せば日時が進み、負の値を渡せば日時が遡ります。使用例1:日付を加算するまずは、115日分のTim